[英]Django, nginx, + gunicorn: connection refused when serving media files
我有一个由gunicorn提供的Django应用,由nginx处理传入请求。 可以很好地提供静态文件,并在本地开发环境中提供媒体文件-我设置了MEDIA_ROOT
和MEDIA_URL
。
但是,在我的网络主机(运行Ubuntu 14.04)上,没有提供媒体文件。 即使我运行Django开发服务器而不是让gunicorn为该应用提供服务,媒体文件也不会显示,并且以下错误会输出到控制台:
由于从等式中删除gunicorn会导致相同的行为,因此我认为问题出在我的nginx配置上。 这是我的sites-available
用于该应用程序:
server {
listen 443 ssl;
server_name <server name here>;
<ssl stuff here>
access_log off;
location /static {
alias /opt/testenv/testenv/proj/static/;
}
location /media {
autoindex on;
alias /opt/testenv/testenv/proj/media/;
}
location ~ /.well-known {
allow all;
}
location / {
proxy_pass http://127.0.0.1:9900;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
server {
listen 80;
server_name <server name here>;
return 301 https://$host$request_uri;
}
我最初是缺少location /media
块的,我认为这是问题所在。 但是,即使在添加它,重新启动nginx并运行collectstatic
,在尝试检索文件时仍然出现CONNECTION REFUSED
REFUSED错误。
我打开了自动索引功能,以验证可以手动导航到文件,并且可以正常工作。
Nginx错误日志不包含与这些连接错误相关的任何内容,这令我感到好奇-请求是否可能在其他地方被拒绝? 我最近设置了HTTPS,但在此之前就发生了此问题。
看起来您是在直接向gunicorn而不是nginx发出请求,通过配置,您应该访问:
https://127.0.0.1
代替:
http://127.0.0.1:9900
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.