在nginx中使用404获取静态文件失败

Alf*_*ang 23 django ubuntu nginx gunicorn

我现在正在ubuntu 12上部署一个带有nginx和gunicorn的django应用程序.

我配置nginx虚拟主机文件如下:

server {
    listen 80;
    server_name mydomain.com;
    access_log  /var/log/nginx/gunicorn.log;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /static/ {
        root /var/www/django/ecerp/erp/static/;
    }

}
Run Code Online (Sandbox Code Playgroud)

我可以很好地请求django,但是当请求一个静态文件时,它会响应404状态.

我确定静态文件的根路径是正确的.

有人可以帮忙吗?

Mar*_*say 38

你应该使用alias而不是root.root将尾随URL部分附加到本地路径(例如http://test.ndd/trailing/part,它将添加/尾随/部分到您的本地路径).而不是那样,alias完全符合您的要求:当请求http://test.ndd/static/时,/ static将完全映射到您的别名,而不会再次附加静态.


Jiv*_*van 7

TL; DR - 你应该检查你的文件权限

偶然发现这个问题并且我已经使用alias而不是root,所以虽然现有答案已达到要点,但以下内容可能对其他人有用.

在我的情况下,解决了相同的症状竟然是在文件中static/root作为所有者.

一个简单的chown www-data:www-data .解决了问题,并没有更多404.