1
miyuki 2018-09-05 07:54:32 +08:00 via Android
可能是出于防止用户故意设置原因
正常来说,在 php 层都会设置允许使用 X Forwarded For 的可信代理段 |
2
oott123 2018-09-05 08:40:05 +08:00 via Android
php 获取 ip 是用哪个字段?不一定是 xff 吧。底下的 nginx 拿的 $remote_addr 是啥?可能是 X-Real-IP 吗?一路上的 nginx 都是怎么配置的?
信息实在是太少了。 |
3
baskice OP @oott123 底下的 nginx 拿的 $remote_addr 是缓存层的内网 ip。
X-Real-IP 没有设置。 最外面的 nginx 做 proxy 分流量到缓存层,缓存层什么都不动转给逻辑层这样。 发现不认 xff 的原因是逻辑层 nginx 的 set_real_ip_from 内网范围写错。导致逻辑层 nginx 完全不信任前面给来的 xff。修正后 xff 已经生效了。 但是我还是不知道到底是什么地方把 cf 的 ip 传给了最后面。 |
4
oott123 2018-09-05 10:14:03 +08:00
但你还是没说 php 是怎么拿 ip 的。REMOTE_ADDR ?还是某个 HTTP 头?
如果是 REMOTE_ADDR,nginx 是怎么传这个环境变量的?一般而言,是 $remote_addr,但这并不绝对,fcgi 的参数也是可以改的。 既然你的 PHP 拿到了奇怪的信息,不应该这里开始追查吗? php -> php-fpm -> nginx -> 上游 nginx 这种思路 |