Nginx+Gunicorn+Django配置時出現“Bad Request (400)”解決方法

在配置 Nginx+Gunicorn+Django 時,我用Nginx作了反向代理,但是沒有設置轉發後request的host,發現所有請求都是返回“Bad Request (400)”,現在來分享這個問題的解決方法。

配置Nginx+Gunicorn+Django時,發現所有請求都是返回“Bad Request (400)”。
最開始,很直觀地想到是Django的settings.py中配置的ALLOWED_HOSTS,檢查了一下我的配置已經爲:ALLOWED_HOSTS = [‘*’]表示允許所有的host。注:如果DEBUG=True,則不檢查request header中的HTTP_HOST;只有關閉DEBUG模式才有這個檢查。 這樣的情況下,我就很奇怪了~~
後來找了好一陣子才忽然發現,我用Nginx作了反向代理,但是沒有設置轉發後request的host,所以關鍵要要加上“proxy_set_header Host $host;”的設置;後來,我是將proxy相關的信息放到proxy.conf文件中,然後在nginx.conf中“include proxy.conf”來引用。proxy.conf示例:https://github.com/smilejay/other-code/blob/master/config/nginx-proxy.conf

代碼如下
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 256k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 128k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;


這樣配置了“proxy_set_header Host $host;”後,問題就解決了。
但是,還有一點兒沒想得太明白,爲啥 ALLOWED_HOSTS = [‘*’] 這個設置沒有匹配上通過代理過來的請求;看文檔是說通過 HttpRequest.get_host() 獲得host,我打開DEBUG,不加”proxy_set_header Host $host;”,獲得到了 request.get_host() 是我在nginx中通配置的”music_server”(因爲配置爲:proxy_pass http://music_server;)。

更多相關文章
  • DeDeCMS v5後台上傳圖片時出現錯誤的解決方法使用DeDe CMS v5.5的網站在後台上傳圖片時出現如下錯誤:作爲web生手的我很是迷茫.印象裏之前並沒有做什麽改動,于是百思不得其解.Google.百度.DeDe官網搜索了一大圈,發現有這個問題的人不少,但是沒有一個給出解決的辦法.只好自己試
  • 文章總結了關于mysql導入數據庫時出現40101錯誤,不能成功把數據庫入的解決辦法,有需要學習的朋友可參考一下.導入錯誤:40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTE
  • 網站出現service unavailable的解決方法
    網站出現service unavailable多半是連接數過多或iis伺服器資源配置的問題,下面我來介紹網站出現service unavailable的解決方法,各位朋友可參考.昨天一小段時間網站出現了service unavailable,于是筆者緊急的解決了此問題,據悉Service Unava ...
  • ASP.NET在IIS上注冊出現0x800702e4錯誤解決方法 有碰到相同問題的朋友可參考本文章來處理.sqlserver/42852.htm target=_blank >1.--404.3 not found2
  • nginx 502多關的原因是資源不足或nginx配置的一些問題導致的,下面我來給提供了一個利用nginx輪詢php服務池狀態然後進行相關處理,希望例子能幫助你解決問題.站經常會出現502錯誤,可以從一下幾個方面著手查:先從FastCGI配置入手:1.查看FastCGI進程是否已經啓動NGINX 5
  • sql2008 附加數據庫時出現5123 錯誤解決辦法
    今天我在重新安裝了系統了,再想把以前的數據庫給附加過來,但是操作時發現提示了5123錯誤提
  • 用mysqldump導出的數據文件,再用source導進去的時候常常有一些報錯 ariable sql_mode cant be set to the value of NULL,百度了好幾回,終于找到是mysql導
  • Mysql中出現 errno:145的解決方法
    本文章是告訴你關于怎麽來把在使用mysql時出來 errno:145錯誤的解決方法,有碰到想同問題的朋友可以嘗試一下下哈.俗話說常在河邊走哪能不濕鞋呢,mysql用多了也會出現很多莫名其妙的問題Can’t open file: ‘×××.MYI’ (errno: 145),這個錯誤一般就是你的數據庫
一周排行
  • winscp在windows下批處理通過SSH端口上傳文件
    winscp在windows下批處理通過SSH端口上傳文件實現方法,有需要了解的朋友可參考 ...
  • 23起有人惡意攻擊我網站,導致伺服器數據丟失,造成嚴重的損失,本人己于昨天整理于攻擊數據與來源IP交于網警處理,希望攻擊者早日收手,攻擊者的站點與基本信息也己確定.
  • 全新的Linode價格表以及硬件和網路.再次加倍的記憶體.全SSD存儲.升級的網路和新的CPU時間分配策略.老用戶可以得到免費升級,而新用戶直接采用新標准.這次升級花費達到了 $45000000,是Linode創建以 ...
  • Postfix 是一款開放源代碼電子郵件伺服器,它是由荷蘭籍研究員Wietse Venema爲了改良sendmail郵件伺服器而産生的.現在我們來講講Ubuntu 12.04上安裝和配置Postfix郵件服務詳細教程 ...
  • iframe src=地址 width=0 height=0></iframe>其中“地址”處可以輸入惡意網站鏈接等二:js文件挂馬只要是JS文件,都可以通過被惡意修改從而被挂上惡意代碼,一般被全站 ...
  • 軒轅劍外傳:穹之扉缺少Data5.Cab解決攻略
    在軒轅劍外傳:穹之扉這一款遊戲裏,最近有的玩家們碰見了缺少Data5.Cab的問題,今天小
  • 今天在做一個小的采集發布接口時發現使用implode函數老提示出錯,但在網上找了一下解決不了,後來仔細看一原因是寫法錯誤了,當然因這個問題也學了不少東西下面給各位整理了一些更合理使用implode()函數用法.我的程
  • 本文章給大家介紹一下關于vim利用map映射執行腳本,希望有需要了解學習的朋友可進入參考.最近開始撿起C語音來看,<c語言實用基礎>,一邊看一邊做例子學習.然後發現,每次寫完一個例子後,都要寫幾個字符,去 ...
  • 帝國空間網免費2g/asp教程/php教程/mysql教程/ftp/可綁米/免備案空間免費虛擬主機free:型號:免費2g全能空間-免備案(free)現價:0元/月原價:50元/月內容:·windows 2003 r
  • truncate delete, drop 語句區別不同點: 1. truncate和 delete只刪除數據不刪除表的結構(定義) drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigge