Nginx 不提供静态服务

Posted

技术标签:

【中文标题】Nginx 不提供静态服务【英文标题】:Nginx doesn't serve static 【发布时间】:2010-12-01 06:08:35 【问题描述】:

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

【问题讨论】:

srry,我不明白你的意思 【参考方案1】:

您的目录设置如何? /home/user/www/oil/oil_database/static_files 中有文件夹 static 吗?在这种情况下,指令应如下所示(注意/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 指令的文档。

【讨论】:

不,没有“静态”目录。谢谢,我试试别名。 我遇到了同样的问题,但是这里的解决方案似乎对我不起作用。我在这里发布了我自己的问题***.com/questions/24131830/…【参考方案2】:

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

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

【讨论】:

以上是关于Nginx 不提供静态服务的主要内容,如果未能解决你的问题,请参考以下文章

CentOS6.7使用nginx提供静态资源服务,反向代理和负载均衡

Nginx 架构和基础原理

Nginx 架构和基础原理

如何使用 docker 映像生成静态文件以从 nginx 映像提供服务?

nginx入门:静态服务搭建

docker、nginx、django 以及如何提供静态文件