繁体   English   中英

Django,nginx和+ gunicorn:提供媒体文件时连接被拒绝

[英]Django, nginx, + gunicorn: connection refused when serving media files

我有一个由gunicorn提供的Django应用,由nginx处理传入请求。 可以很好地提供静态文件,并在本地开发环境中提供媒体文件-我设置了MEDIA_ROOTMEDIA_URL

但是,在我的网络主机(运行Ubuntu 14.04)上,没有提供媒体文件。 即使我运行Django开发服务器而不是让gunicorn为该应用提供服务,媒体文件也不会显示,并且以下错误会输出到控制台:

Chrome开发者控制台输出

由于从等式中删除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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM