首页 文章

Django,nginx,gunicorn:连接媒体文件时拒绝连接

提问于
浏览
0

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

但是,在我的Web主机(运行Ubuntu 14.04)上,不提供媒体文件 . 即使我运行Django dev服务器而不是让gunicorn为应用程序提供服务,媒体文件也不会显示,并且以下错误会输出到控制台:

Chrome dev console output

由于将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 错误 .

我打开autoindex来验证文件是否可以手动导航,这确实有效 .

nginx错误日志不包含任何与这些连接错误相关的内容,这对我很好奇 - 请求在其他地方被拒绝了吗?我最近设置了HTTPS,但此问题甚至在此之前就已发生 .

1 回答

  • 2

    看起来你直接向gunicorn请求而不是nginx,你应该访问配置:

    https://127.0.0.1
    

    代替:

    http://127.0.0.1:9900
    

相关问题