2016-09-15 80 views
2

幾個星期前,我花了一段美好的時間設置Apache和Django配置,以強制SSL並在AWS負載平衡器後面運行。現在Django Apache上的無效HTTP_HOST標頭 - 使用Require修復?

,它是所有工作很好,我還在不斷地接收公共「無效HTTP_HOST頭」的錯誤,並試圖找出正確的方式去修復它。

搜索已經給我帶來了關於Apache的配置如下回答:

How to disable Django's invalid HTTP_HOST error?

其中建議將以下設置<Directory></Directory>塊內的虛擬主機文件:

SetEnvIfNoCase Host .+ VALID_HOST 
Order Deny,Allow 
Deny from All 
Allow from env=VALID_HOST} 

該作品,但根據Apache(https://httpd.apache.org/docs/2.4/howto/access.html),此方法已被棄用。

我通過Apache文檔閱讀,但是當我嘗試使用下面的代碼,它只是關閉訪問該網站,並給了我一個「未授權」的錯誤。

<RequireAll> 
    Require host example.org 
</RequireAll> 

不完全確定我錯過了什麼。我知道我可以使用第一個答案解決問題,只是嘗試使用未被棄用的代碼找出「正確」的方式。網站使用WSGIDaemonProcess運行Django應用程序,並具有以下設置通過AWS爲強制SSL

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTP:X-Forwarded-For} !="" 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} 

回答

2

所以,用這種搞亂很長一段時間,我想通了,我正在處理這個問題可能有一些後因爲IP地址指向的是AWS EC2實例,而不是我的域,所以主機名反向DNS查找失敗。

終於得到它放棄了之後我又回到瞭如何禁用日誌錯誤後,並使用環境變量,這似乎是工作的嘗試。

顯然是需要正確的格式是:

<Directory /var/www/html/> 
    SetEnvIfNoCase Host example\.com VALID_HOST 
    Require env VALID_HOST 
    Options 
</Directory> 

這些傢伙說得對,只需要更新其用於當前的「規定」指令。

How to disable Django's invalid HTTP_HOST error?

0

無需使用mod_setenvif作爲HTTP_HOST已經是一個變量,而您可以直接對其進行評估。

<Directory /var/www/html/> 
    Require expr %{HTTP_HOST} == "example.com" 
    Options 
</Directory>