描述:ThinkPHP 6 中 request()->ip() 返回127.0.0.1或内网IP,是因为默认仅信任REMOTE_ADDR,反向代理时需配置trust_proxies数组指定可信代理段,否则忽略X-Forwarded-For/X-Real-IP头。ThinkPHP 6 中 reques…
ThinkPHP 6 中 request()->ip() 返回127.0.0.1或内网IP,是因为默认仅信任REMOTE_ADDR,反向代理时需配置trust_proxies数组指定可信代理段,否则忽略X-Forwarded-For/X-Real-IP头。
request()->ip() 返回 127.0.0.1 或内网 IP 怎么办直接原因:TP6 默认只从 REMOTE_ADDR 取 IP,而 Nginx/Apache 反向代理后,真实客户端 IP 被写入 X-Forwarded-For 或 X-Real-IP,但框架未自动信任这些头字段。
解决前提是明确部署环境是否启用反向代理(如 Nginx → PHP-FPM):
request()->ip() 通常正确在 config/app.php 中添加或修改:
1 |
|
注意:trust_proxies 是数组,支持 CIDR 写法;若用宝塔,Nginx 的 proxy_set_header X-Real-IP $remote_addr; 必须存在,且 PHP 所在机器 IP 必须落在该数组中,否则 TP 会忽略所有代理头。
立即学习“PHP免费学习笔记(深入)”;
$_SERVER[REMOTE_ADDR] 和 request()->ip() 结果不一致根本区别在于数据来源和处理逻辑:
$_SERVER[REMOTE_ADDR] 是 CGI 协议层原始值,由 Web 服务器(如 Nginx)直接设置,不受 PHP 代码影响request()->ip() 是 ThinkPHP 封装方法,内部按顺序检查:X-Forwarded-For → X-Real-IP → REMOTE_ADDR,但**仅当客户端 IP 属于 trust_proxies 列表时,才接受前两个头**典型错误场景:
X-Real-IP,但 trust_proxies 没包含 Nginx 所在 IP → TP 强制回退到 REMOTE_ADDR(即 127.0.0.1)X-Forwarded-For 有多个 IP,TP 默认取第一个,但若首段不可信,需配合 trust_proxies 向前跳过不能无条件信任 X-Forwarded-For,因为客户端可伪造该 Header。可靠做法是:只信任你控制的上一级代理所附加的值。
推荐封装一个辅助函数(放在 app/common/Helper.php):
1 2 3 4 5 6 7 8 9 10 11 |
|
关键点:
X-Forwarded-For 字符串 —— TP 已处理好层级和信任链FILTER_FLAG_NO_PRIV_RANGE 排除 10.x、172.16–31.x、192.168.x 等内网段FILTER_FLAG_NO_RES_RANGE 排除 0.0.0.0、127.0.0.0/8、169.254.0.0/16 等保留地址TP5.1 没有 trust_proxies 配置项,其 request()->ip() 默认信任所有代理头,存在被伪造风险;TP6 引入该配置后更安全,但也更“严格”。
迁移注意事项:
trust_proxies 配置,否则线上 IP 全变 127.0.0.1request()->ip(true) 表示“返回真实 IP(跳过代理头)”,等价于直接读 $_SERVER[REMOTE_ADDR],慎用request()->realIP() 方法,功能同 ip() 但语义更明确,建议新项目使用最易被忽略的一点:本地开发用 php think run 时,没有 Nginx,trust_proxies 应设为空数组或注释掉,否则可能干扰调试。
5元云服务器:入门级新手首选 我是一名刚毕业的大学生,对编程充满了热情,但现实总是骨感一些。刚踏入职场,我梦想着能独立开发一个网站或应用,却苦于没有足够的资源。买一台实体服务器太贵,租个虚拟空间又觉得…
6元服务器租用,高性价比VPS主机推荐 记得去年我刚开始创业,做了一个小型网站来展示我的产品。那时,我手头紧,预算有限,却急着需要一个可靠的服务器来托管网站。作为一个普通上班族,我对技术懂得不多,但我…
2021年云服务器优惠套餐推荐 嗨,朋友们!你是否曾经在深夜里,面对一堆代码和服务器错误,感叹说:“为什么我的项目老是卡顿?”如果是这样的话,那你可能正在寻找2021年云服务器优惠套餐的解决方案。作为…
1元买走一台云服务器,这种天上掉馅饼的事存在吗? 那天,我在咖啡馆里刷手机,偶然看到一个广告:“只需1元,就能买走一台高性能云服务器!容量无限,稳定快速,适合创业和学习。”我的心跳突然加速了。作为一个…
云服务器10元/月:经济型服务价格新记录 最近,云服务器的价格被推向了一个新低,10元一个月的方案让许多人惊喜不已。这不仅仅是数字上的变化,更是科技服务普惠化的一个标志。云服务器作为一种基于云计算的虚…
盘点最新优惠 云服务器网站推荐 探盘最新优惠 云服务器网站推荐 云计算技术的迅猛发展,使得云服务器成为企业和个人开发者不可或缺的基础设施。云服务器,作为一种基于虚拟化技术的计算资源,允许用户按需获取计…