2

nginx を gunicorn と一緒に動作させようとしています。/project/static/静的ファイルがあるディレクトリがあります。これらのファイルは、次の構成/project/livestatic/を使用してディレクトリに収集されます。settings.py

STATIC_ROOT = '/project/livestatic'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    '/project/static',
)

次のnginx構成を使用しています:

worker_processes 1;
user nobody nogroup;
pid /tmp/nginx.pid;
error_log /tmp/nginx.error.log;

events {
    worker_connections 1024;
    accept_mutex off;
}

http {
    include mime.types;
    default_type application/octet-stream;
    access_log /tmp/nginx.access.log combined;
    sendfile on;

    upstream app_server {
        server 127.0.0.1 fail_timeout=0;
    }

    server {
        listen 80 default;
        client_max_body_size 4G;
        server_name domain.org;

        keepalive_timeout 5;

        # path for static files
        location /static/ {
            autoindex on;
            root /var/www/startupsearch_live/livestatic/;
        }

        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

            proxy_pass   http://127.0.0.1:8888;
        }
    }
}

開発サーバー (nginx を無視) の下では、この構成は正常に機能し、形式でリンクすることで静的ファイルを提供できます/static/file.extension。ただし、nginx/gunicorn が登場した瞬間、これは機能せず、アクセスしようとするとdomain.org/static/django 404 ページが表示され、nginx がファイルをまったく提供していないことが示されます。どうやって間違ったの?

4

1 に答える 1

8

この質問はここでかなり聞かれます...

location /static/ {
    alias /var/www/startupsearch_live/livestatic/;
}

あなたが持っていた方法を使用すると、解決をroot要求します/static/foo.jpg/var/www/startupsearch_live/livestatic/static/foo.jpg

alias場所を追加しません。1 対 1 でそのままマッピングします。

于 2012-08-20T02:00:43.773 に答える