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

时间:2014-10-07 14:05:17

标签: 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/;
    }

}

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

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

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:33)

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

答案 1 :(得分:6)

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

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

就我而言,相同症状的解决方案原来是chown www-data:www-data .404为所有者的文件。

一个简单的this解决了这个问题,而且不再是function(point){ return ( <div key={point}>{this.renderInnerContent()}</div> ) }