美文网首页
Laravel 5.6 获取用户真实 IP 地址

Laravel 5.6 获取用户真实 IP 地址

作者: 爱绑架的猫 | 来源:发表于2020-06-01 10:03 被阅读0次

这几天开发遇到这样一个问题,使用laravel 框架自带的 $reqeust->ip(); 方法获取到的客户端 ip 地址不准确,所以我就在网上查了一些方法看如何解决,有写的好的大神,讲的非常的详细,这里我就不照搬人家的东西了,感兴趣的小伙伴可以自己去看一下这里是具体地址:  Laravel中获取真实ip - 简书 也是简书的一位书友写的。

    本着实用至上,我就略过具体的知识点直接讲我遇到的问题和如何解决的:

    1,获取 IP 地址不准的原因:

      答:因为我的项目服务器使用了 cloud flare 的节点加速,这样不同地区访问的我项目的时候,我如果直接使用 laravel 自带的 $request->ip(); 获取到的 IP 地址其实是 cloud flare 加速节点的地址,例如中国区的加速节点地址就是 198.42.129.0/22 (假的,举例) 这个范围的 IP 地址,而不是来自中国区真正的 IP 地址。

      2,laravel >=5.5* 框架中如何解决这个问题?

      答:此套配置只对 laravel 版本大于 5.5 的项目有用,我获取到了我的 cloud flare 加速节点所有地址的节点 ip 地址范围:

      然后我们到项目的中间件目录里面找到这个类文件:

      app/Http/Middleware/TrustProxies.php

      修改里面的这个类属性:protected $proxies;

        如图所示,我们把 cloud flare 加速节点的地址都放到一个数组里然后赋值给 $proxies 属性,这样我们再次使用 $request->ip() 方法获取客服端 ip 地址的时候就不会获取到加速节点的 ip 地址了。

相关文章

网友评论

      本文标题:Laravel 5.6 获取用户真实 IP 地址

      本文链接:https://www.haomeiwen.com/subject/jnrjzhtx.html