Nginx 获取转发前的用户端IP地址(php-laravel8)

411 阅读1分钟

前言

大家好,今天遇到了一个问题,明明在反向代理中配置了转发IP,为什么在request()->ip()的时候获取到的还是前端项目的服务器ip,在找了很多资料后,我发现了我愚蠢的错误:转发的IP地址会写在头部,而我用的还是getIP,写入的地方不一样,自然是获取不到的,这个时候,我们只需要使用获取头部指定信息就可以获取到nginx转发前的IP。

正文

这里是转发传IP的地方

image.png

这里是提取IP的地方

image.png

这样我们就可以获取到用户的真实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;
        }

好啦,今天的分享就到这里了!如果有什么错误的地方请多多指正,在评论区指点,一起做秃头大佬!!!