我现在正在 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 状态响应。
我确定静态文件的根路径是正确的。
有人能帮忙吗?
最佳答案
您应该使用 alias
而不是 root
。 root
将结尾的 URL 部分附加到您的本地路径(例如 http://test.ndd/trailing/part ,它会将/trailing/part 添加到您的本地路径)。取而代之的是,alias
完全符合您的要求:当 http://test.ndd/static/ 时被请求时,/static 会准确映射到您的别名,而无需再次附加 static。
例如:
location /static {
alias /var/www/django/ecerp/erp/static/;
}
如果文件 /var/www/django/ecerp/erp/static/foo.html
存在然后去 /static/foo.html
将返回它的内容.
关于django - 在 nginx 中获取静态文件失败并显示 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26237936/