2016-07-09 66 views
0

我有一個由gunicorn提供的Django應用程序,nginx處理傳入的請求。靜態文件服務很好,媒體文件在本地開發環境中提供 - 我有MEDIA_ROOTMEDIA_URL集。Django,nginx,+ gunicorn:在服務媒體文件時拒絕連接

但是,在我的虛擬主機(運行Ubuntu 14.04)上,不提供媒體文件。即使我運行的Django開發服務器,而不是讓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,但這個問題甚至在此之前就已經發生了。

回答

2

看起來像您這樣的直接請求gunicorn而不是nginx的,從你的配置,你應該訪問:的

https://127.0.0.1 

代替:

http://127.0.0.1:9900 
+0

所以,我需要9900因爲這是港口gunicorn正在聆聽。然而,你關於請求的觀點是有效的 - 事實證明這是Django設置的問題,所以我錯誤地認爲它與我的nginx配置有關。我必須將MEDIA_URL從'/ media /'更改爲'https:// /media' – dkhaupt

相關問題