web-dev-qa-db-ja.com

awsec2およびDjango ALLOWED_HOSTS

私は、Elastic Beanstalkを使用して、awsEC2でDjangoを使用してWebサイトを配置しました。 Django Webサイトで推奨されているように、ALLOWED_HOSTSを['www.mydomain.fr'、 '。mydomain.fr']に設定しました。

しかし、私は次のような多くのアラートを受け取りました:

無効な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に追加しても安全ですか、それともセキュリティリークにつながる可能性がありますか?

どうもありがとう

2
trnsnt

はい、大丈夫です。ただし、インスタンスを終了すると、そのアドレスは失われます。したがって、ALLOWED_HOSTSに対処するためのより柔軟で動的な方法を見つけるように努める必要があります。インスタンスのアドレスを環境変数として設定してみることをお勧めします。

または、あまり動的でないソリューション:AWS ElasticIPを使用してチェックインすることもできます。ただし、これは仮想プライベートクラウド内のプライベートサブネットでは不可能な場合があります。ただし、セットアップではそうではないようです。

探索する別のオプションがあります...これが安全であるかどうかについていくつかの調査を行う必要がありますが。このAWSページでAWSIPからインスタンスのメタデータをフェッチする方法をご覧ください...

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

そして、上記のAWSリソースをDjango設定ファイルで次のように活用します...

#Djangoプロダクション設定
 
インポートリクエスト
 from .base import * 
 
 ########## ALLOWED_HOSTS 
 fromrequests.exceptionsインポートConnectionError 
 
 url = "http://169.254.169.254/latest/meta-data/public -ipv4 "
 try:
 r = requests.get(url)
 instance_ip = r.text 
 ALLOWED_HOSTS + = [instance_ip] 
 except ConnectionError:
 error_msg = "本番設定はAWSEC2インスタンスでのみ実行できます" 
 raise ImproperlyConfigured(error_msg)
 ########## END ALLOWED_HOSTS 
5
Sean