代码之家  ›  专栏  ›  技术社区  ›  DataGreed

nginx不提供静态服务

  •  20
  • DataGreed  · 技术社区  · 16 年前

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

    2 回复  |  直到 12 年前
        1
  •  56
  •   Benjamin Wohlwend    16 年前

    您的目录设置如何?有文件夹吗 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_数据库/static_文件 到URL /静态/ ,你也必须

    • 重命名文件夹 static_files 静止的 并使用以下指令:

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

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

    请参阅 root alias 指令。

        2
  •  1
  •   Ryan Duffield    16 年前

    我的django站点有一个类似的配置,但我想您想使用 alias 而不是 root 为你的媒体。例如:

    location /static {
        alias /home/user/www/oil/oil_database/static_files;
    }
    
    推荐文章