Django,gunicorn和nginx代理:静态文件给404

时间:2017-05-26 09:03:48

标签: django nginx centos7 gunicorn

我在本地机器上通过gunicorn运行django项目的开发。出于reason™,我想将nginx设置为它的代理。到目前为止,好的:

location /intranet {
    return 301 /intranet/;
}

location /intranet/ {
    rewrite ^/intranet(.*) /$1 break; 
    proxy_redirect default;
    proxy_pass http://127.0.0.1:8000;
}

这很好地解决了这个问题。但是,没有一个静态文件被切断:我得到的只是404。

如何修改上述nginx配置,以便切断静态内容?

请注意,使用https::127.0.0.1:8000,静态文件可以正常使用。

1 个答案:

答案 0 :(得分:1)

在项目中,您应该指向URL:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

如果您在每个应用程序中都有一个静态文件夹,则可以使用:

python manage.py collectstatic

这会抓取所有静态文件并将它们放在同一个静态文件夹(STATIC_ROOT)

然后你的Ngnix也必须知道存储statifiles的位置

server {
    access_log /pathto/log/acces.log;
    error_log  /pathto/log/error.log;
    server_name ******
    charset     utf-8;

    location /static {
        alias /path/to/your/static; <---- This Line
    }

    location /intranet/ {
        rewrite ^/intranet(.*) /$1 break; 
        proxy_redirect default;
        proxy_pass http://127.0.0.1:8000;
    }
}