2017-05-03 303 views
4

提供的域名無效我試圖配置nginx以及Gunicorn的Django項目。 nginx的是給我下面的錯誤:無效的HTTP_HOST標頭:'localhost:90,localhost:90'。根據RFC 1034/1035

DisallowedHost at/
Invalid HTTP_HOST header: 'localhost:90,localhost:90'. The domain name provided is not valid according to RFC 1034/1035. 

這是我的nginx的配置

server { 

     listen 90; 
     listen [::]:90; 

     server_name xxxx; 

     location = /favicon.ico { access_log off; log_not_found off; } 
     location /static/ { 
      root /home/user/djangopro/djangoapp; 
     } 

     location/{ 
      include proxy_params; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_buffering off; 
      proxy_redirect off; 

      proxy_pass http://localhost:8200/; 
     } 
    } 

Gunicorn在localhost:8200正常服務的網站。任何人都可以告訴我是什麼導致了錯誤?

+0

爲什麼用'90'而不是'80'。任何理由? – itzMEonTV

+0

'HTTP_HOST'必須包含一個帶有可選端口號的域名,而不是逗號分隔的域列表。我無法分辨爲什麼它被設置爲無效值。 – knbk

+0

我需要改變= @ knbk –

回答

0

我得到了同樣的錯誤。我猜你可能是從Flask轉換到Djano來的?如果您從配置中刪除proxy_set_header Host $http_host;行,它應該可以工作(它修復了我的錯誤)。我認爲這樣做會將請求的IP地址和代理IP地址堆疊在一起,而Django只需要一個IP地址,而不是一個列表。看到這個Djano票:https://code.djangoproject.com/ticket/28028

我猜你已經得到這個想通了(因爲它是一個幾個月),但我還是回答到救一個人2個小時,我只花了谷歌搜索:)

編輯:我想澄清,問題來自同時設置include proxy_params;proxy_set_header Host $http_host;。默認的proxy_params已經包含proxy_set_header Host $http_host;,所以它會設置主機兩次,因此兩個主機的列表。如果你使用的是Ubuntu,請查看/etc/nginx/proxy_params中的proxy_params文件(其他機器上的路徑類似)。