tp6无法获取客户端真实IP

浏览:3930 发布日期:2020/08/26 分类:ThinkPHP6专区
因前后端分离导致将前端代码和后端代码分成了2个不同的项目,都以web的形式部署到同一台机器了。

然后在前端网站上使用了proxy_pass直接跳转至后端网站,所以浏览器访问了前端网站,前端网站再向后端网站请求数据,这时后端拿到的客户端ip(用request()->ip())始终是127.0.0.1,而不是客户端真正的IP!

前端网站已经添加了配置,如下:location ^~/api/ {
                #proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://admin-back/admin/;
        }
经过调试,发现最终问题在于vendor/topthink/framework/src/think/Request.php文件中的第1592行:$proxyIp 列表是空的,所以无法进入if, 而这个变量的值来源于$this->proxyServerIp(初始化为空数组的)

关于这个问题,难道没人遇到过吗?我相信大佬也不可能不知道这种事的,为什么不修复呢?
最佳答案
评论( 相关
后面还有条评论,点击查看>>