在做商城系统的时候需要用到用户的真实IP,根据用户真实IP来获取所在区域,由于服务器使用的Nginx做代理,所以服务器端下方代码一直返回的IP是127.0.0.1,Nginx没有把用户真实IP进行转发,这时候就需要配置一下Nginx,只需要在location节点下增加以下两行配置即可。
proxy_set_header X-Forward-For $remote_addr; proxy_set_header X-real-ip $remote_addr;
服务器端获取用户真实IP源码如下:
func RemoteIp(req *http.Request) string { remoteAddr := req.RemoteAddr if ip := exnet.ClientPublicIP(req); ip != "" { remoteAddr = ip } else if ip := exnet.ClientIP(req); ip != "" { remoteAddr = ip } else if ip := req.Header.Get("X-Real-IP"); ip != "" { remoteAddr = ip } else if ip = req.Header.Get("X-Forwarded-For"); ip != "" { remoteAddr = ip } else { remoteAddr, _, _ = net.SplitHostPort(remoteAddr) } if remoteAddr == "::1" { remoteAddr = "127.0.0.1" } return remoteAddr }
2013-2024 LifeAdd生活方式 www.lifeadd.cn 版权所有 | 御融(北京)科技有限公司 All Rights
Reserved
增值电信业务经营许可证:京B2-20200664 | 京ICP备14004911号-7