在弹性 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 错误的主要内容,如果未能解决你的问题,请参考以下文章

在弹性 beantalk 上配置 apache

我正在尝试使用 .ebextensions 配置在弹性 beanstalk 上安装 pdftk 服务器,但无法安装

AWS 弹性 beanstalk 可以配置或移动到另一个 AZ

如何在弹性 beantalk 配置上运行 wget cron 命令

我应该在配置文件 (.ebextensions) 或保存的配置下放置弹性 beanstalk 选项吗?

在 docker 容器中获取弹性 beanstalk 环境变量