我已经在我的 nginx 配置中添加了以下内容来处理欺骗域:
if ($host !~* ^(.*example.org|\d+\.\d+\.\d+\.\d+)$ ) {
return 444;
}
现在它会将 IP 地址列入白名单,因为我需要为某些请求接受它们。
这在 AWS ELB 后面,因此它也需要响应 IP 地址。
理想情况下,我希望它只接受自己的公共 IP 地址和自己的私有 IP 地址。但是,我不想将其硬编码到配置中,因为这些是 AWS 实例。
所以我想我想知道是否有人提出了一种解决方案来阻止专门限制所需 IP 的欺骗主机标头。
我能想到的最好的想法是生成配置文件的脚本,在启动时添加正确的 IP,然后将它们复制到 nginx 配置文件夹。但我觉得必须有一个更优雅的解决方案,不需要我编写启动脚本。
为什么
既然有人问我为什么要这样做,我基本上有两个目标:
- 消除由于 HOST_HEADER SuspiciousOperation 错误而收到的 Django 错误
- 防止机器人(占这些欺骗请求的 99.9%)甚至到达我的 Web 应用程序层。
您最好的选择确实是生成一个配置文件部分并包含它,因为没有它,nginx 无法知道 Host 标头中的授权 IP。
使用 domain-ips 文件包含: