我在Elastic Beanstalk上部署了django应用程序。我的应用程序的HealthCheck一直失败,因为ALLOWED_HOSTS设置变量中未包含ELB HealthCheck的IP。

如何修改ALLOWED_HOSTS以通过HealthCheck?我只是传递了明确的IP地址,但是我相信这会改变,因此,每当IP更改时,检查都会再次失败,直到添加新IP。

最佳答案

您的EC2实例可以查询metadata有关其自身的信息,包括其IP地址,该地址可从http://169.254.169.254/latest/meta-data/local-ipv4获得。

您可以通过ssh-ing进入EC2实例并运行以下命令来进行测试:

curl http://169.254.169.254/latest/meta-data/local-ipv4

因此,在您的配置中,您可以执行以下操作:
import requests

ALLOWED_HOSTS = ['.yourdomain.com', ]
try:
    EC2_IP = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4').text
    ALLOWED_HOSTS.append(EC2_IP)
except requests.exceptions.RequestException:
    pass

显然,如果不需要依赖项,可以将requests替换为urllib

关于带有ALB HealthCheck的Django ALLOWED_HOSTS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27720254/

10-09 22:20