需要帮助设置 nginx 来提供静态文件服务

需要帮助设置 nginx 来提供静态文件服务

我正在尝试设置 nginx 来提供静态文件。基本上我需要的是http://mydomain.com/site_media/指向 /var/django/myproject/site_media。

我尝试了很多配置,但测试时总是会出现静态文件 404 错误。

谁能告诉我我做错了什么或者我应该如何设置?

这是我当前的 nginx 配置文件。

用户www数据;
工作进程 1;

#错误日志 /usr/local/nginx/logs/error.log;
#pid /usr/local/nginx/logs/nginx.pid;

事件 {
    工作者连接1024;
    使用epoll;
}

http {

    # 在此枚举所有 Tornado 服务器
    上游前端 {
        服务器 127.0.0.1:8000;
        服务器 127.0.0.1:8001;
        服务器 127.0.0.1:8002;
        服务器 127.0.0.1:8003;
    }

    包括 mime.types;
    默认类型应用程序/八位字节流;

    #访问日志 /usr/local/nginx/logs/access.log;

    保持活动超时 65;
    代理读取超时200;
    发送文件;
    tcp_nopush 开启;
    tcp_nodelay开启;
    开启 gzip;
    gzip_最小长度 1000;
    gzip_proxied任何;
    gzip_types 文本/纯文本/html 文本/css 文本/xml
               应用程序/x-javascript 应用程序/xml
               应用程序/atom+xml 文本/javascript;

    proxy_next_upstream 错误;

    服务器 {
        听80;

        # 允许文件上传
        客户端最大主体大小50M;

        位置 ^~ /site_media/ {
            根目录/var/django/myproject/site_media;
            如果 ($query_string) {
                最大有效期限;
            }
        }
        位置 = /favicon.ico {
            重写 (.*) /site_media/favicon.ico;
        }
        位置 = /robots.txt {
            重写(.*)/site_media/robots.txt;
        }

        地点 / {
            proxy_pass_header 服务器;
            proxy_set_header 主机 $http_host;
            代理重定向关闭;
            proxy_set_header X-真实IP $remote_addr;
            proxy_set_header X-Scheme $方案;
            代理密码 http://前端;
        }
    }

    #包括/usr/local/nginx/sites-enabled/*;

}

谢谢,

卡塔

答案1

/var/django/myproject/site_media/site_media我查看了 nginx 错误日志,发现它正尝试从而不是--weird提供媒体服务/var/django/myproject/site_media

我将其改为root /var/django/myproject/site_media;root /var/django/myproject;现在可以正常工作了。

:)

答案2

如果您的指令中未包含尾部斜杠,root /blah;它将附加位置。如果您包含尾部斜杠,则不会。

相关内容