Django无效的HTTP_HOST标头Elastic Beanstalk

时间:2019-05-11 12:05:15

标签: django amazon-elastic-beanstalk

我正在AWS ELB上运行一个大型的业余网站。我试图解决此问题,但是搜索StackOverflow却没有任何效果。我如下更新了settings.py和ALLOWED_HOSTS:

ALLOWED_HOSTS = ['127.0.0.1','.amazonaws.com','mysite.com','.elasticbeanstalk.com','localhost',]

import requests
EC2_PRIVATE_IP = None
try:
  EC2_PRIVATE_IP = requests.get("http://169.254.169.254/latest/meta-data/local-ipv4", timeout = 0.50).text
except requests.exceptions.RequestException:
  pass

if EC2_PRIVATE_IP:
  ALLOWED_HOSTS.append(EC2_PRIVATE_IP)

ELB健康检查确实起作用。

但是,我仍然每天收到数千封错误电子邮件。例如:

无效的HTTP_HOST标头:“ 54.84.163.167”。您可能需要在ALLOWED_HOSTS中添加“ 54.84.163.167”。

报告于/ 无效的HTTP_HOST标头:“ 54.84.163.167”。您可能需要在ALLOWED_HOSTS中添加“ 54.84.163.167”。

我的网站架构是Cloudfront,ELB和Django。据我所知,显示的IP地址(确实会定期更改)是Amazons网络的一部分。我怀疑这是负载均衡器本身,但我不知道一种方法来确认并确定要添加到允许主机的负载均衡器IP地址。

还有其他想法或想法吗?

1 个答案:

答案 0 :(得分:0)

这似乎是一个AWS IP地址,可能来自EC2或ELB。 挖-x 54.84.163.167 +短 ec2-54-84-163-167.compute-1.amazonaws.com。

这不是cloudfront区域边缘ip,因为此处未列出: http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips(CLOUDFRONT_REGIONAL_EDGE_IP_LIST)

另外,从ELB到Ec2的运行状况检查是通过ELB ENI专用IP地址进行的,我不确定是哪个AWS资源拥有此资源,但似乎正在绕过CloudFront直接在ELB上发出请求。