Nginx不提供静态服务

我在Ubuntu Server 9.04上运行Django。

Django运行良好,但nginx不返回静态文件 – 总是404。

这是configuration:

server { listen 80; server_name localhost; #site_media - folder in uri for static files location /static { root /home/user/www/oil/oil_database/static_files; autoindex on; } #location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) { # root /home/user/www/oil/oil_database/static_files; # access_log off; # expires 30d; #} location / { root html; index index.html index.htm; # host and port to fastcgi server #fastcgi_pass 127.0.0.1:8080; fastcgi_pass unix:/home/user/www/oil/oil_database/oil.sock; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; } access_log /var/log/nginx/localhost.access_log; error_log /var/log/nginx/localhost.error_log; } 

Nginx的版本是0.6.35。

所有的目录存在,并作出777(debugging偏执狂)。 当我取消注释时,注释掉的块不起作用。

你的目录设置如何? 你在/home/user/www/oil/oil_database/static_filesstatic文件夹吗? 在这种情况下,指令应该看起来像这样(注意/static/斜线):

 location /static/ { autoindex on; root /home/user/www/oil/oil_database/static_files; } 

如果要将路径/home/user/www/oil/oil_database/static_files到URL /static/ ,则必须

  • 将文件夹static_files重命名为static并使用此指令:

     location /static/ { autoindex on; root /home/user/www/oil/oil_database/; } 
  • 使用别名:

     location /static/ { autoindex on; alias /home/user/www/oil/oil_database/static_files/; } 

请参阅有关rootalias指令的文档。

我为我的Django网站有类似的配置,但我想你想为媒体使用alias而不是root 。 例如:

 location /static { alias /home/user/www/oil/oil_database/static_files; }