我已经使用Django在aws EC2上使用Elastic Beanstalk来放置我的网站。 根据Django网站上的build议,我已经将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是安全的,还是会导致安全漏洞?
非常感谢
是的,没关系。 但是,如果你终止实例,你将失去该地址。 所以:你应该努力find一个更灵活/dynamic的解决ALLOWED_HOSTS的方法。 您可能想尝试将实例的地址设置为环境variables。
或者,一个不太dynamic的解决scheme:您可能还想要使用AWS Elastic IP进行检查。 虽然这在虚拟私有云中的私有子网中可能是不可能的 – 尽pipe在设置中听起来并不是这样的情况。
这是另一个探索的select…虽然你将不得不做一些研究,以确定这是否安全。 了解如何在此AWS页面上从AWS IP获取实例的元数据…
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html
然后在您的Django设置文件中利用上面提到的AWS资源,像这样…
#DJANGO生产环境
导入请求
from .base import *
########## 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]
ConnectionError除外:
error_msg =“您只能在AWS EC2实例上运行生产设置”
引起错误configuration(error_msg)
########## END ALLOWED_HOSTS