在配置的华为云的负载均衡之后,会导致服务端服务器在获取用户IP的时候获取到的是负载均衡NAT之后的IP地址,而不是用户的原始地址,如果想获取用户的原始地址需要对服务器进行配置。
我在服务器上使用的是宝塔的nginx,在服务器上并不是所有的站点都配置了负载均衡,所以是在单独的站点的配置中设置的获取原始配置。
我使用的是华为云的共享负载均衡实例。
说明:
华为云在对站点进行了负载均衡之后,会将用户原始IP地址放在头信息中,key值为:x-real-ip。
根据华为云的文档,如果想在代码中获取到IP地址,则需要对nginx进行配置。
在配置文件中增加配置信息如下:
set_real_ip_from 100.125.0.0/16; real_ip_header X-Forwarded-For;
如下图:
配置完成之后重载nginx,就可以在代码中通过获取header中的x-real-ip获取到真实的用户ip了。
laravel 框架中直接使用laravel框架的获取IP方法即可获取到真实IP。