ip地址获取方法存在差异

浏览:1058 发布日期:2020/05/26 分类:ThinkPHP6专区
由于生产是多台服务器,采用阿里的负载均衡。 在升级到tp6后的项目,经观察发现日志中的ip字段经常记录的是保留地址。
经过排查后发现tp5和tp6的获取ip方法存在差异,获取出来的地址可能并非真实客户端地址:

tp6获取ip方法:
request()->ip();

tp5获取ip方法:
request()->ip();

经过验证,将两种方式调用后,输出如下:
^ "tp6: 100.121.83.181"
^ "tp5: 113.87.129.206"

明显,tp6的方法获取到的是保留地址
在源码中,tp5先获取的是HTTP_X_FORWARDED_FOR, 这个获取到的是客户端真实地址, 而tp6是先获取REMOTE_ADDR, 如果服务开启负载, 多半获取到的是代理服务器的地址, 即你看到的并非真实ip地址,而是保留地址
最佳答案
评论( 相关
后面还有条评论,点击查看>>