我已经使用 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”。您可能需要将“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 是否安全,或者是否会导致安全漏洞?
多谢
答案1
是的,没问题。但是如果您终止实例,您将丢失该地址。因此:您应该努力找到一种更灵活/动态的方式来处理 ALLOWED_HOSTS。您可能想尝试将实例的地址设置为环境变量。
或者,一个不太动态的解决方案:您可能还想检查是否使用 AWS Elastic IP。虽然,这在虚拟私有云中的私有子网中可能是不可能的——尽管在您的设置中听起来不是这种情况。
这是另一个值得探索的选项...尽管您必须做一些研究来确定这是否安全。请参阅此 AWS 页面上的如何从 AWS IP 获取实例的元数据...
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html
然后在您的 Django 设置文件中利用上面建议的 AWS 资源,如下所示...
# DJANGO 生产设置 导入请求 从 .base 导入 * 允许的主机 从请求.异常导入 ConnectionError url =“http://169.254.169.254/latest/meta-data/public-ipv4” 尝试: r = 请求.get(url) 实例 ip = r.text ALLOWED_HOSTS += [实例 ip] 除了连接错误: error_msg = “您只能在 AWS EC2 实例上运行生产设置” 引发配置不当(错误消息) ########## 结束 ALLOWED_HOSTS
答案2
您能说出为什么 ec2 会向 django 服务器发送请求吗?我见过许多解决 ALLOWED_HOSTs 问题的答案,但不明白为什么会出现这种情况,或者为什么 ec2 ip 会命中它