我正在尝试设置 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;
它将附加位置。如果您包含尾部斜杠,则不会。