问:如何ALLOW_HOSTS
在弹性beanstalk实例上设置django 以允许Elastic Load Balancer IP?
背景
我在弹性beanstalk上部署了django网站.网站域名被添加到ALLOW_HOSTS
正常请求被django正确接受.
ALLOWED_HOSTS = ['.mydomain.com']
Elastic Load balancer直接使用IP地址访问Elastic beanstalk实例以进行运行状况检查,因此下一行允许运行状况检查:
# add elastic beanstalk instance local ip aws_ip = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4', timeout=0.1).text ALLOWED_HOSTS.append(aws_ip)
但我仍然得到无效的HOST IP错误,似乎弹性负载均衡器公共IP访问了弹性beanstalk实例.有针对EC2部署的在线解决方案,因为您可以将HTTPD软件设置为在IP直接访问时设置http HOST标头.但我们无法在弹性beanstalk上配置apache.那么如何将弹性负载均衡器IP添加到ALLOW_HOSTS
?
没有充分理由接受针对您的ELB IP的流量.对于健康检查,我的首选方法:
import requests try: internal_ip = requests.get('http://instance-data/latest/meta-data/local-ipv4').text except requests.exceptions.ConnectionError: pass else: ALLOWED_HOSTS.append(internal_ip) del requests
没有复杂的apache配置,这取决于您的域
在dns上快速失败,无需依赖超时