任何方式来阻止IP地址主机头欺骗?

我已经添加了以下内容到我的nginxconfiguration来处理欺骗域:

if ($host !~* ^(.*example.org|\d+\.\d+\.\d+\.\d+)$ ) { return 444; } 

现在,它将IP地址列入白名单,因为我需要接受某些请求。

这是AWS ELB的后台,因此它也需要响应IP地址。

理想情况下,我希望它只接受自己的公共和自己的私人IP地址。 但是,我不想将这些代码硬编码到configuration中,因为它们是AWS实例。

所以我想我想知道是否有人提出了一个阻止欺骗主机头的解决scheme,专门限制到所需的IP。

最好的想法,我可以想出一个脚本,生成configuration文件,在启动时添加正确的IP,然后将它们复制到nginxconfiguration文件夹。 但我觉得必须有一个更优雅的解决scheme,不需要我写一个启动脚本。

为什么

由于有人问我为什么要这样做,我基本上有两个目标:

  • 消除由于HOST_HEADER SuspiciousOperation错误而收到的Django错误
  • 防止僵尸程序(占这些欺骗请求的99.9%)甚至到达我的Web应用程序层。

你最好的select的确是生成一个configuration文件的一部分,并将其包含在内,因为没有它,nginx无法知道Host头部中的授权IP。

 server { listen 80; server_name mypublicdomain.com anotherdomain.com; include conf.d\domain-ips; [ ... ] } 

使用包含以下内容的域ips文件:

 server_name xxxx; # Public IP server_name xxxx; # Private IP