go 通过nginx代理后获取用户ip
2014-08-14 00:00
288 查看
go 如果使用自己的服务器,可以直接使用 net/http 来获取
另外,在net包中也有
以上是获取用户的ip,是与用户直连的ip,如果走代理,会是代理的ip
如果通过nginx代理,上边方法获得的是nginx的服务器的ip,所以这里要设置nginx代理
nginx会 转发ip到go的服务器,在通过go获取header中的romote_adder 获取用户的ip
nginx设置还可以设置X-Forward-For,这里没有测试,所以就没有贴出来,也是可以获取用户ip的,如果用户代理也是可以拿到真是ip的,通过header头获取虽然有可能被修改,但好像现在只有这几种方式,如果你有的方式,请回复出来,大家一起学习(x-forward-for的格式一般是:client_ip,proxy_ip,proxy_ip,...,所以,这样需要截取,如果用户没有走代理的话,这个会是空的)
兼容go服务器的获取
func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.RemoteAddr) }
另外,在net包中也有
func (c *IPConn) RemoteAddr() Addr
以上是获取用户的ip,是与用户直连的ip,如果走代理,会是代理的ip
如果通过nginx代理,上边方法获得的是nginx的服务器的ip,所以这里要设置nginx代理
proxy_set_header Remote_addr $remote_addr;
nginx会 转发ip到go的服务器,在通过go获取header中的romote_adder 获取用户的ip
func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.header.get("Romote_adder ")) }
nginx设置还可以设置X-Forward-For,这里没有测试,所以就没有贴出来,也是可以获取用户ip的,如果用户代理也是可以拿到真是ip的,通过header头获取虽然有可能被修改,但好像现在只有这几种方式,如果你有的方式,请回复出来,大家一起学习(x-forward-for的格式一般是:client_ip,proxy_ip,proxy_ip,...,所以,这样需要截取,如果用户没有走代理的话,这个会是空的)
兼容go服务器的获取
func ip(w http.ResponseWriter, r *http.Request) { ip:=r.header.get("Romote_adder ") if (ip=="") { ip=r.RemoteAddr } fmt.Println(ip) }
相关文章推荐
- 使用Nginx代理通过HttpServletRequest获取用户IP地址
- nginx代理web,后端无法获取用户真实IP
- 多级代理下Nginx获取真实用户IP地址的总结
- 使用Nginx反向代理后如何在web应用中获取用户IP
- nginx使用反向代理时获取用户IP
- Nginx 反向代理 如何在web应用中获取用户ip
- 使用nginx反向代理后如何在后台web应用中获取用户ip
- nginx代理获取用户真实ip
- 多级代理下Nginx获取真实用户IP地址的总结
- 使用nginx反向代理后,获取用户ip及原理解释
- nginx反向代理httpd获取用户真实ip
- 根据IP(有代理的情况)定位城市以及通过nginx转发的tomcat如何得到用户真实的ip
- 使用nginx反向代理时,如何正确获取到用户的真实ip
- 使用nginx反向代理后如何在后台web应用中获取用户ip
- nginx代理后获取用户ip
- Haproxy做代理,后端nginx获取真实用户IP
- 多级代理下Nginx获取真实用户IP地址的总结
- Nginx反向代理获取客户端真实IP
- 使用nginx后如何在web应用中获取用户ip
- nginx代理 获取不到客户端的真实IP问题