aws ec2 和 Django ALLOWED_HOSTS

aws ec2 和 Django ALLOWED_HOSTS

我已经使用 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 会命中它

相关内容