前言
大家好,今天遇到了一个问题,明明在反向代理中配置了转发IP,为什么在request()->ip()的时候获取到的还是前端项目的服务器ip,在找了很多资料后,我发现了我愚蠢的错误:转发的IP地址会写在头部,而我用的还是getIP,写入的地方不一样,自然是获取不到的,这个时候,我们只需要使用获取头部指定信息就可以获取到nginx转发前的IP。
正文
这里是转发传IP的地方
这里是提取IP的地方
这样我们就可以获取到用户的真实IP了!下面是配置和代码:
PHP获取IP转发信息
$ip = request()->header('x-forwarded-for');
nginx配置
# 接口代理,用于解决跨域问题
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $realip_remote_addr;
proxy_set_header X-Forwarded-For $realip_remote_addr;
# 后台接口地址
proxy_pass http://123.22.111.290:8899/api/;
proxy_redirect default;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
好啦,今天的分享就到这里了!如果有什么错误的地方请多多指正,在评论区指点,一起做秃头大佬!!!