好的,所以我想尝试一下 nginx,在通过 FastCGI 设置我的 Django 应用程序时遇到了一个问题。FastCGI 运行正常,但静态文件给我 404。这是我的配置:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/default.access.log;
location /static/public {
autoindex on;
index index.html;
root /home/daniels/djangoapp/public;
}
location / {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/home/daniels/djangoapp/djangoapp.sock;
}
# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/nginx-default;
#}
}
我尝试以http://127.0.0.1/static/public/访问的任何内容都会给出 404 ,
例如:http://127.0.0.1/static/public/css/sytle.css位于 /home/daniels/djangoapp /public/css/style.css 给出 404
知道有什么问题吗?
乐:
2010/02/20 22:31:42 [error] 3411#0: *3 open() "/home/daniels/djangoapp/public/img/static/public/img/background.jpg" failed (2: No such file or directory), client: 10.0.2.2, server: localhost, request: "GET /static/public/img/background.jpg HTTP/1.1", host: "127.0.0.1"
所以它似乎将/static/public
位置指令的部分附加到根
LE2:
好的,我真的很抱歉错字,但这是在我复制和粘贴日志并编辑应用程序名称时制作的。似乎发生的事情是,因为/static/public
我将 root 设置为/home/daniels/djangoapp/public
所以http://127.0.0.1/static/public/test.jpg
我期待 nginx 查找文件,/home/daniels/djangoapp/public/test.jpg
但它却在查找/home/daniels/djangoapp/public/static/public/test.jpg
它似乎它附加了一个额外/static/public
的路径。
刚刚修复使用这个:
我认为 Nginx 以相反的顺序关联规则:尝试将 /static/public 部分放在 / 规则下方。
我有这个配置,效果很好:
假设您实际上没有在 URL 中输入 sytle.css 而是 style.css 然后启用错误日志:http ://wiki.nginx.org/NginxHttpMainModule#error_log并查看它试图访问的路径。
您应该将静态内容放在其自己的子域中。以后更容易管理和扩展。