分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

Nginx反向代理 Laravel获取真实IP地址(PHP)

发布时间:2023-09-06 02:24责任编辑:白小东关键词:PHP反向代理IP地址

使用VUE前后端分离开发

后端使用Laravel  想要获取到用户的真实IP地址

因为分离开发不同源跨域问题 所以只能进行前端Nginx反向代理

location /api { ????????rewrite ?^/api/(.*)$ /api/$1 break; ???????proxy_pass ??https://***.********.com;}

然后在后端获取IP地址的时候 通过原始方法

$request->getClientIp();

发现返回的只是代理服务器的IP地址

查找资料获得方法

在前端Nginx代理配置写入

location /api { ????????rewrite ?^/api/(.*)$ /api/$1 break; ???????proxy_pass ??https://***.*********.com;}proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

插入之后进行Nginx重启发现warning错误

Starting nginx: nginx: [warn] could not build optimal proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_size: 64; ignoring proxy_headers_hash_bucket_size

然后进行查找资料 解决办法

在nginx.conf配置文件里面的http代码块里面加入

http{...proxy_headers_hash_max_size 51200;proxy_headers_hash_bucket_size 6400;

之后重启就没有报错信息了

但是使用

$request->getClientIp();

还是代理服务器IP地址

找到方法发现获取的是

REMOTE_ADDR

随后打印$_SERVER

发现真是的IP地址存在于

$_SERVER[‘HTTP_X_FORWARDED_FOR‘]

幸好我只有一处使用了这个IP  暂时用这个代替了 

还有一个办法就是在 

$request->getClientIp();

之前加入

$request->setTrustedProxies($request->getClientIps()); //这个可以放入到中间件中 ?这样就不用更改代码了var_dump($request->getClientIp());

记录一下 以免忘记

Nginx反向代理 Laravel获取真实IP地址(PHP)

原文地址:https://www.cnblogs.com/Gasg/p/10025965.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved