django - Django 无效的 HTTP_HOST 标头 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”。您可能需要将“54.84.163.167”添加到 ALLOWED_HOSTS。
报告/无效 HTTP_HOST 标头:'54.84.163.167'。您可能需要将“54.84.163.167”添加到 ALLOWED_HOSTS。
我的站点架构是 Cloudfront、ELB 和 Django。据我所知,显示的 IP 地址(并且它会定期更改)是亚马逊网络的一部分。我怀疑它是负载均衡器本身,但我不知道如何确认并确定要添加到允许主机的负载均衡器 IP 地址。
还有其他想法或想法吗?
解决方案
这似乎是一个 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 上发出请求。
推荐阅读
- vb.net - 如果 dialog.result.Cancel 然后做点什么
- flutter - 在可导航应用程序中保持不同小部件之间编辑状态的正确方法
- c++ - For-Loop 带有负迭代器的“空”向量?
- google-apps-script - 用于查询电子表格数据但权限被拒绝的 Google 应用脚本
- isabelle - 如何提起外稃
- php - Laravel Excel 上传和验证 CSV 在 Validator 失败
- java - 查询参数中的 AsyncRestTemplate '#' 符号编码
- arrays - Android:解析 JSON。没有价值……?
- spring-boot - spring cloud config server vs consul的区别?
- c# - 如何用永久体实现接口方法?