静态文件服务的 nginx 问题

dan*_*els 3 nginx

好的,所以我想尝试一下 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;
 #}
}
Run Code Online (Sandbox Code Playgroud)

我尝试以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"
Run Code Online (Sandbox Code Playgroud)

所以它似乎将/static/public来自 location 指令的部分附加到根

LE2:
好的,我真的很抱歉打字错误,但这是在我复制并粘贴日志并编辑应用程序名称时做出的。有什么事发生的是,/static/public我有根集到/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的路径。

dan*_*els 11

刚刚修复使用这个:

location /static/public/ {
    alias /home/daniels/neasoferul/public/;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我也在使用 root 并花了我大约一个小时来弄清楚发生了什么。 (4认同)