遇到个非常奇怪的状况,
我这边有负载均衡的 nginx 一个,后接内容缓存层,然后是和 php 一起逻辑处理层的 nginx。
最开始这个负载均衡的 nginx 已经设置过 set_real_ip_from 的 cloudflare 全 ip 段。
我这里可以肯定的是到最后逻辑处理层的 ngxin,输出的 X-Forwarded-For: 是 [真实访客 IP, 127.0.0.1 ] 。这个真实访客 ip 和 CF-Connecting-IP 是一致的。
尽管最后一层的 nginx 设置了
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
但 php 输出访客 ip 却总是 cloudflare 的 ip。
唯一能避免的办法是在最后逻辑层的 nginx 上也设置 set_real_ip_from 把 cloudflare 的全部 ip 段都加入。
我就特别想不明白,最后一层的 nginx 到底是怎么获得 cf 的 ip 的。以及它为什么不把 X-Forwarded-For 排头的用户 ip 认作真实 ip ?
我这边有负载均衡的 nginx 一个,后接内容缓存层,然后是和 php 一起逻辑处理层的 nginx。
最开始这个负载均衡的 nginx 已经设置过 set_real_ip_from 的 cloudflare 全 ip 段。
我这里可以肯定的是到最后逻辑处理层的 ngxin,输出的 X-Forwarded-For: 是 [真实访客 IP, 127.0.0.1 ] 。这个真实访客 ip 和 CF-Connecting-IP 是一致的。
尽管最后一层的 nginx 设置了
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
但 php 输出访客 ip 却总是 cloudflare 的 ip。
唯一能避免的办法是在最后逻辑层的 nginx 上也设置 set_real_ip_from 把 cloudflare 的全部 ip 段都加入。
我就特别想不明白,最后一层的 nginx 到底是怎么获得 cf 的 ip 的。以及它为什么不把 X-Forwarded-For 排头的用户 ip 认作真实 ip ?