使用Nginx阻止代理后面的IP

我在这里运行一个Nginx 1.2.4networking服务器,并且支持我的主机代理防止ddos攻击。 在这个代理背后的缺点是,我需要从额外的头部获得真正的IP信息。 在PHP中,例如,通过执行$_SERVER[HTTP_X_REAL_IP] ,效果很好。

现在在我的主机代理的背后,我有一个非常有效的方法来阻止某些IP的这样做: include /etc/nginx/block.conf并允许/拒绝那里的IP。

但是现在由于代理,Nginx会看到来自1个IP的所有stream量。

我用--with-http_realip_moduleconfiguration了Nginx,所以我现在应该可以从人们那里得到真正的IP。

在我的nginx.conf中,我添加了:

 real_ip_header X-Forwarded-For; include blockips.conf; 

我也试过了:

 real_ip_header X-Real-IP; include blockips.conf; 

在这两种情况下,blockips.conf中列出的IP都没有被阻塞。 同样在我的日志文件中,我没有看到真正的IP,但只有代理IP显示出来。

我究竟做错了什么?

我解决了它。

必须补充:

 set_real_ip_from 0.0.0.0; 

其中IP 0.0.0.0是代理

小心 :设置set_real_ip_from 0.0.0.0/0; 可能是一个潜在的安全问题,因为它将允许任何传入的请求与标题,如X-Forwarded-For设置真正的IP。 即使在特殊情况下这可能是有用的,但几乎可以肯定的是,在nginx中创建了一个ip阻塞的规避方法。 感谢@phylae在他的评论中澄清。