我有一个由gunicorn提供的Django应用程序,nginx处理传入的请求。静态文件提供得很好,媒体文件在我的本地开发环境中提供 - 我设置了MEDIA_ROOT
和MEDIA_URL
。
但是,在我的网络主机(运行Ubuntu 14.04)上,不提供媒体文件。即使我运行Django dev服务器而不是让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
错误。
我打开了自动索引以验证文件是否可以手动导航,这确实有效。
nginx错误日志中不包含任何与这些连接错误相关的内容,这对我很好奇 - 请求可能会被其他地方拒绝吗?我最近设置了HTTPS,但这个问题甚至在此之前就已经发生了。
答案 0 :(得分:2)
看起来你直接向gunicorn请求而不是nginx,你应该访问配置:
https://127.0.0.1
而不是:
http://127.0.0.1:9900