在弹性beantalk上配置Apache / Django以解决INVALID_HOST错误

时间:2020-10-02 21:57:27

标签: django amazon-web-services apache amazon-elastic-beanstalk

背景

当前设置为

  • 拥有一个托管在AWS S3中的网站(例如app.com)
  • 已将API服务器托管在弹性beantalk中(例如api.com)
  • 网站向api服务器发出api请求

ALLOWED_HOST已在Django中设置为包含

  • 有弹性的beantalk地址
  • api的网址

问题:

  • 该网络应用正常运行。但是,我看到来自随机网址(机器人,漏洞利用等)对api的大量请求。这会引发数百个Invalid HTTP_HOST header错误。我显然可以关闭错误通知,但这感觉不对。
  • 该日志建议将一堆IP地址添加到ALLOWED_HOST中,其中大多数是我的负载均衡器的IP地址。但是,由于我的常规api请求没有问题,我怀疑将负载均衡器的IP地址添加到ALLOWED_HOST是否是解决方案。
  • 这样就可以更改负载平衡器本身,以便它在无效时不会将请求定向到Django。我已经找到了一些与此有关的答案,例如

两个问题:

  • 以上修改是否是解决此问题的正确方法?
  • 是否可以通过编程的方式将此方法应用于Elastic Beanstalk环境?

将感谢您的帮助

谢谢!

1 个答案:

答案 0 :(得分:0)

这些可能是弹性 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,
    ...
]