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

分类: 计算机技术
推荐阅读:
Rust assert_eq宏的用法和示例 在 Rust 中,assert_eq宏用于比较两个值,如果它们相等,则程序将继续执行;如果它们不相等,则会导致panic,并在控制台输出相关信息。
Python bytearray()函数 bytearray是 Python 中的一个内置类,用于表示二进制数据。与 bytes 类似,bytearray也是不可变的序列,但是它可以通过索引来修改其中的元素,因此可以用于一些需要修改二进制数据的场合。
Python计算二阶行列式的值 本文将使用Python语言编写程序计算二阶行列式的值;
C语言实现斐波那契数列 对于斐波那契数列,其下一个数字是前两个数字的和,例如:0、1、1、2、3、5、8、13、21等等;斐波那契数列的前两个数为0和1;使用C语言实现斐波那契数列的方法有两种,递归和无递归;
Python使用莱布尼茨公式计算圆周率 可以通过莱布尼茨级数的求和来逼近圆周率;公式为:π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ......(无限项)
Python计算卡特兰数(catanlan number) 卡特兰数(Catalan number),是组合数学中一种常出现于各种计数问题中的数列;本文使用Python来计算卡特兰数;