使用VUE前后端分离开发

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

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

location /api {
rewrite ^/api/(.*)$ /api/$ 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)的更多相关文章

  1. nginx反向代理如何获取真实IP?

    由于客户端和web服务器之间增加了中间层,因此web服务器无法直接拿到客户端的ip,通过$remote_addr变量拿到的将是反向代理服务器的ip地址. 1.安装--with-http_realip_ ...

  2. 多级反向代理java获取真实IP地址

    public static String getIpAddress(HttpServletRequest request){ String ip = request.getHeader("x ...

  3. nginx做反向代理时获取真实IP

    原文:http://blog.csdn.net/aquester/article/details/48657395 1. 编译 对于client -> nginx reverse proxy - ...

  4. .Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索

    公司项目最近出现获取访问域名.端口.IP错误现象,通过排查发现, 之前项目一直通过Nginx自定义Headers信息来获取,但最近运维人员失误操作造成自定义Header信息丢失,造成项目拿不到对应的数 ...

  5. JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)

    1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...

  6. 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;

    package com.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.htt ...

  7. JSP 获取真实IP地址的代码

    [转载]JSP 获取真实IP地址的代码 JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.   ...

  8. 【转载】JSP 获取真实IP地址的代码

    JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.   但是在通过了 Apache,Squid ...

  9. java 获取真实ip地址

    /** * 获取真实ip地址 * @param request * @return */ public static String getIpAddress(HttpServletRequest re ...

随机推荐

  1. SharePoint 2013 - Bootstrap

    1. 在SharePoint 2013中应用Bootstrap时,需要添加以下css: <style> .container{ margin-left:0px; //为了使containe ...

  2. 上传文件到Maven仓库

    1.上传jar到本地仓库 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversi ...

  3. web.xml中不同版本的servlet头以及版本控制

    参考文章: http://www.cnblogs.com/beijingstruggle/p/5461146.html http://blog.csdn.net/z69183787/article/d ...

  4. java面试题之----数据库事务的四大特性及隔离级别

    本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...

  5. Android应用开发基础之五:网络编程(二)

    HttpClient 发送get请求 创建一个客户端对象 HttpClient client = new DefaultHttpClient(); 创建一个get请求对象 HttpGet hg = n ...

  6. nagios外部命令接口

    http://nagios.manubulon.com/traduction/docs14en/extcommands.html https://old.nagios.org/developerinf ...

  7. SQL Server ->> 在SQL Server中创建ASSEMBLY

    首先要把数据库的TRUSTWORTHY属性改为ON ALTER DATABASE [MYDB] SET TRUSTWORTHY ON GO 接下来直接创建ASSEMBLY应该就没问题了.但是往往有可能 ...

  8. css Media Query详解

    Media Queries详解 Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: 1 <link href="css/re ...

  9. 初涉node.js做微信测试公众号一路填坑顺便发现个有趣的其他漏洞

    [微信测试公众号] 半年前耍着玩搭起来的“微信简历”,是LAMP版的,很皮毛. 微信的官方文档在这 http://mp.weixin.qq.com/wiki/index.php 1.获取access ...

  10. TinkPHP去重统计查询

    当统计一个有重复的字段可以用这个方法 $count = $model->where($map)->count('distinct(id)'); 转自 http://www.thinkphp ...