4

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

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

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

我已经配置了 Nginx,--with-http_realip_module所以我现在应该能够从人们那里获得真实的 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。

我究竟做错了什么?

4

2 回答 2

2

我解决了。

不得不补充:

set_real_ip_from 0.0.0.0;

IP0.0.0.0是代理

于 2012-10-31T14:51:58.460 回答
0

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

于 2017-04-19T11:35:36.020 回答