【发布时间】:2016-08-09 04:26:00
【问题描述】:
我有一个 Django 应用程序,它使用 Apache 和 mod_wsgi 在 AWS ELB 平衡器后面的 EC2 实例上运行。平衡器将 SSL 流量(端口 443)映射到 EC2 实例上的端口 8080。 Apache 在端口 8080 上配置了一个 VirtualHost 来为 Django 应用程序提供服务,其中 ServerName 设置为网站的域名。 Django 在生产模式下运行(DEBUG=False),并公开了一个 healthcheck 端点(在 /healtcheck 中)。 ALLOWED_HOSTS 设置设置为网站的域名,加上 EC2 实例的私有 IP 地址,以允许负载均衡器访问运行状况检查端点。
这个设置一切正常。问题是我偶尔会收到来自 Django 的电子邮件,其中包含类似以下的错误消息:ERROR (EXTERNAL IP): Invalid HTTP_HOST header: '52.51.147.134'. You may need to add u'52.51.147.134' to ALLOWED_HOSTS. 标头还包含HTTP_X_FORWARDED_FOR = '139.162.13.205'
我想我得到了属于脚本小子的各种 IP 地址(有时还有主机名)。
如何阻止此流量到达 Django 应用程序,同时仍然允许有效流量(其中 HTTP_HOST 是我的域名)和 ELB 运行状况检查流量(其中 HTTP_HOST 是我的 EC2 私有 IP 地址)?
【问题讨论】:
-
如果我理解正确,这只是烦人,您没有遇到任何其他不良影响吗?无论如何,您应该能够在 Apache 中简单地过滤它,但如果您可以提供 Apache 版本和当前的 VirtualHost .conf 会很有用
标签: python django apache amazon-web-services amazon-ec2