Nginx的不提供静态(Nginx doesn't serve static)

2019-07-19 12:02发布

我的Ubuntu 9.04服务器上运行的Django。

Django的效果很好,但nginx的不返回静态文件 - 总是404。

这里的配置:

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(调试偏执狂)。 当我取消它被注释掉的块没有帮助。

Answer 1:

如何为您的目录设置? 你有一个文件夹static/home/user/www/oil/oil_database/static_files ? 在这种情况下,该指令看起来应该像这样(注意尾随斜线/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_filesstatic和使用该指令:

     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指令。



Answer 2:

我有我的Django的网站类似的配置,但我想你想使用alias来代替root为您的媒体。 例如:

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


文章来源: Nginx doesn't serve static