我已经使用这个设置很多年了:centos5、nginx、apache Nginx 配置为这样的代理
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8000;
我不知道发生了什么,也不知道我可能在某个地方做了什么,但一个多月前,设置突然停止工作:因为 apache 获取的是代理的本地 IP,而不是客户端的实际真实 IP。我今天才注意到这一点,这就是为什么我不知道我可能做了什么。我追溯了记录客户端 IP 的 http 日志,这就是我知道发生此更改的日期和时间的方式。Yum 日志没有显示该日期前后的任何内容。我犯了一个错误,在查看配置文件时间戳之前先尝试了一些配置,因此该信息丢失了。但我认为我没有更改配置。
知道可能哪里出了问题吗?
我确实尝试用以下方法替换 x-warded-for
proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $remote_addr;
并且还添加到了
set_real_ip_from 192.168.0.3; real_ip_header X-Real-IP; real_ip_recursive on;
nginx.conf 中我的 http 配置的顶部,但似乎没有任何作用。
谢谢。
答案1
经过大量挖掘,该问题似乎是由某些地方的一些 IP 相关变化引起的。(背景:nginx 和 apache 都在同一台服务器上。)
具体来说,自从我在 2016 年设置 mod_rpaf 配置以来,它的 RPAF_ProxyIPs 就为 127.0.0.1。但不知何故,在 4 月初,服务器无法通过 127.0.0.1 与 apache 通信,而是通过服务器的 LAN IP(192.168.0.3)将其添加到 RPAF_ProxyIPs 解决了问题。