读取用户出口ip

读取用户出口ip

web项目中读取用户的出口ip是个常见需求,切换到新的工程后发现读取不到了。。。

首先翻看了一下iris的api获取用户ip的方法是:

	remoteAddr := ctx.Request().RemoteAddr
	fmt.Println("----" + remoteAddr)

通过域名访问我的工程,输出结果是

127.0.0.1:41550

官方提供的方法应该不会有错吧!那问题可能出现在了环境上。
通过ip访问我的工程,输出结果是

114.241.248.115:55735

百度搜索一下ip关键字,结果和工程中获取到的ip是一致的。

搜索图片
应该是环境影响了获取的方法。我的工程访问环境是这样的
域名 -->

域名
负载均衡
目标机
nginx
web工程

web工程出现问题,我先从nginxi的日志下手,通过分析,nginx日志中的用户ip都能拿到。 那问题应该出现在了nginx转发。查了一下资料,发现nginx转发时可以把用户的ip转到header中 。
nginx配置文件中添加下面的代码

proxy_set_header X-real-ip $remote_addr;

解释一下 “$remote_addr” 是nginx中的变量,变量中存储的用户出口ip。我们这个值赋给http请求的header中的“X-real-ip”。这样我们就可以在代码中通过读取httpheader的方式拿到用户的ip了。

	remoteAddr = ctx.Request().Header.Get("X-real-ip")
	fmt.Println("用户ip====" + remoteAddr)

输出结果

用户ip====114.241.248.115
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值