Django 无效的 HTTP_HOST 标头 Elastic Beanstalk
Posted
技术标签:
【中文标题】Django 无效的 HTTP_HOST 标头 Elastic Beanstalk【英文标题】:Django Invalid HTTP_HOST header Elastic Beanstalk 【发布时间】:2019-09-29 02:32:16 【问题描述】:我正在 AWS ELB 上运行一个大型业余爱好网站。我试图通过搜索 *** 来解决这个问题,但没有任何效果。我更新了我的 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”。您可能需要将“54.84.163.167”添加到 ALLOWED_HOSTS。
报告于 / 无效的 HTTP_HOST 标头:“54.84.163.167”。您可能需要将“54.84.163.167”添加到 ALLOWED_HOSTS。
我的站点架构是 Cloudfront、ELB 和 Django。据我所知,显示的 IP 地址(它确实会定期更改)是亚马逊网络的一部分。我怀疑它是负载均衡器本身,但我不知道如何确认并确定要添加到允许主机的负载均衡器 IP 地址。
还有其他想法或想法吗?
【问题讨论】:
我也看到了这个确切的问题。我不确定这只是随机机器人爬行还是配置错误。话虽这么说,即使它是爬虫程序,让它返回一个不同的错误状态然后 500 会很好,因为这会导致我的运行状况检查或多或少地返回错误/阳性。 您找到解决方案了吗?我仍然有这个问题。 【参考方案1】:这似乎是一个 AWS IP 地址,可能来自 EC2 或 ELB。 挖 -x 54.84.163.167 +short ec2-54-84-163-167.compute-1.amazonaws.com.
这不是云端区域边缘 ip,因为它未在此处列出: http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips (CLOUDFRONT_REGIONAL_EDGE_IP_LIST)
另外,从 ELB 到 Ec2 的运行状况检查发生在 ELB ENI 私有 IP 地址中,我不确定哪个 AWS 资源拥有它,但它似乎是绕过 CloudFront 直接在 ELB 上发出请求。
【讨论】:
以上是关于Django 无效的 HTTP_HOST 标头 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章
避免使用 Django + Elastic Beanstalk 获得“无效的 HTTP_HOST 标头:'localhost'”消息
Django 错误:无效的 HTTP_HOST 标头:u'/run/myprojectname/gunicorn.sock:'
Django 无效的 HTTP_HOST 标头 Elastic Beanstalk
Django 无效的 HTTP_HOST 标头:'testserver'。您可能需要将 u'testserver' 添加到 ALLOWED_HOSTS