Amazon-Ec2

aws ec2 和 Django ALLOWED_HOSTS

  • June 14, 2017

我已經使用 Django 在 AWS EC2 上使用 Elastic Beanstalk 建立了我的網站。我已將 ALLOWED_HOSTS 設置為

$$ ‘www.mydomain.fr’, ‘.mydomain.fr’ $$,如 Django 網站上所建議的那樣。 但是我收到了很多警報,例如:

無效的 HTTP_HOST 標頭:“ip-xxx-xx-xx-xxx.eu-west-1.compute.internal”。您可能需要將 u’ip-xxx-xx-xx-xxx.eu-west-1.compute.internal’ 添加到 ALLOWED_HOSTS。

ip-xxx-xx-xx-xxx.eu-west-1.compute.internal 在哪裡是我的私有 DNS?

將其添加到 ALLOWED_HOSTS 是否安全,或者會導致安全漏洞?

非常感謝

是的,沒關係。但是,如果您終止實例,您將失去該地址。所以:你應該努力尋找一種更靈活/動態的方式來處理 ALLOWED_HOSTS。您可能想嘗試將實例的地址設置為環境變數。

或者,一個不太動態的解決方案:您可能還想檢查是否使用 AWS 彈性 IP。雖然,這在虛擬私有云中的私有子網中可能是不可能的——儘管在您的設置中聽起來並非如此。

這是另一種探索的選擇……儘管您必須對這是否安全進行一些研究。在此 AWS 頁面上了解如何從 AWS IP 獲取實例的元數據…

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html

然後像這樣在您的 Django 設置文件中利用上面建議的 AWS 資源……

#DJANGO 製作設置

導入請求
從 .base 導入 *

########## ALLOWED_HOSTS
從 requests.exceptions 導入 ConnectionError

url = "http://169.254.169.254/latest/meta-data/public-ipv4"
嘗試:
r = requests.get(url)
instance_ip = r.text
ALLOWED_HOSTS += [instance_ip]
除了連接錯誤:
error_msg = "您只能在 AWS EC2 實例上執行生產設置"
引發不當配置(error_msg)
########## END ALLOWED_HOSTS

引用自:https://serverfault.com/questions/640809