在弹性 beanstalk 上配置 Apache/Django 以解决 INVALID_HOST 错误
Posted
技术标签:
【中文标题】在弹性 beanstalk 上配置 Apache/Django 以解决 INVALID_HOST 错误【英文标题】:Configure Apache/Django on elastic beanstalk to address INVALID_HOST errors 【发布时间】:2021-01-18 13:15:52 【问题描述】:背景:
当前设置是
在 AWS S3 中托管一个网站(例如 app.com) 将 api 服务器托管在弹性 beanstalk 中(例如 api.com) 网站向 api 服务器发出 api 请求ALLOWED_HOST 已在 Django 中设置,因此它包含
弹性豆茎地址 api 的 url问题:
Web 应用程序运行良好。但是,我看到大量来自随机 url(机器人、漏洞利用等)的 api 请求。这引发了数百个Invalid HTTP_HOST header
错误。我显然可以关闭错误通知,但感觉不对。
日志建议将一堆ip地址添加到ALLOWED_HOST,其中大部分是我的负载均衡器的ip地址。但是,由于我的常规 api 请求没有问题,我怀疑将负载均衡器的 IP 地址添加到 ALLOWED_HOST 是否也是解决方案。
因此,这将改变负载平衡器本身,这样它就不会将请求定向到 Django,如果它是无效的。我已经找到了一些与此相关的答案,例如
How to disable Django's invalid HTTP_HOST error?
Django Invalid HTTP_HOST header on Apache - fix using Require?
两个问题:
上述修改是否是处理此问题的正确方法? 有没有办法以编程方式将此应用到 Elastic Beanstalk 环境?将不胜感激任何帮助
谢谢!
【问题讨论】:
【参考方案1】:这些可能是弹性 beanstalk 健康检查调用。这些来自 IP 地址。
尝试添加到settings.py
from socket import gethostname, gethostbyname # For AWS Healthchecker
HOST_NAME = gethostname()
HOST_IP = gethostbyname(HOST_NAME)
ALLOWED_HOSTS [
...
HOME_NAME, HOME_IP,
...
]
【讨论】:
以上是关于在弹性 beanstalk 上配置 Apache/Django 以解决 INVALID_HOST 错误的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试使用 .ebextensions 配置在弹性 beanstalk 上安装 pdftk 服务器,但无法安装
AWS 弹性 beanstalk 可以配置或移动到另一个 AZ
如何在弹性 beantalk 配置上运行 wget cron 命令