无法获取nginx来提供收集的静态文件

时间:2012-08-20 01:02:28

标签: django nginx gunicorn static-files

我想让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直接上升根本不提供文件。我怎么出错了?

1 个答案:

答案 0 :(得分:7)

这个问题在这里有很多问题......

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

root方式使用/static/foo.jpg请求/var/www/startupsearch_live/livestatic/static/foo.jpg解析为alias

{{1}}不会将该位置附加到该位置。它一对一地按原样映射。