使用Nginx来阻止代理后面的IP

时间:2012-10-31 14:25:45

标签: proxy nginx ddos

我在这里运行Nginx 1.2.4网络服务器,并且我在我的主机代理后面防止ddos攻击。支持这个代理的缺点是我需要从额外的头部获取REAL IP信息。在PHP中,例如,$_SERVER[HTTP_X_REAL_IP]可以很好地工作。

在我支持我的主机代理之前,我有一种非常有效的方法可以阻止某些IP:include /etc/nginx/block.conf并允许/拒绝IP。

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

我已经使用--with-http_realip_module配置了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。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我解决了。

不得不补充:

set_real_ip_from 0.0.0.0;

其中IP 0.0.0.0是代理

答案 1 :(得分:0)

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