gin+Nginx获取真实的客户端IP

gin获取客户端真实IP方法如下:

func xx(c *gin.Context){
	
	ip := c.ClientIP()

}

当使用Nginx为Golang gin程序做反向代理(端口转发)或负载均衡时,gin得到的客户端IP为127.0.0.1,这是由于Nginx没有正确配置导致;

解决方法

在Nginx配置中设置两个HTTP Header,X-Real-IPX-Forward-For

location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $remote_addr;
}

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/gin-get-real-clientip.html

分类: 计算机技术
推荐阅读:
Python hasattr()函数 hasattr() 是 Python 内置函数之一,用于检查一个对象是否具有指定的属性或方法。
Python中__getitem__()方法和索引器[]的详细用法 在本文中将详细描述如何使用Python为自定义对象使用索引器和类的__getitem__()方法;
Python all()函数 all()是Python内置函数之一,它接收一个可迭代对象,如果可迭代对象中的所有元素都为真值(非零、非空、非None等),则返回True,否则返回False。
Python oct()函数 oct() 是 Python 的内置函数之一,用于将整数转换为八进制字符串。
Python getattr()函数 getattr() 函数是 Python 内置函数之一,用于获取一个对象的指定属性值。
Rust unimplemented宏的用法和示例 在Rust中,unimplemented宏用于表示某个功能或方法尚未实现;它通常用作临时占位符,以提示开发者在后续的开发过程中需要实现的部分。