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 type()函数 type() 函数用于获取对象的类型,或者动态地创建一个新的类。其语法如下:
Python complex()函数 在Python中,complex()函数用于创建一个复数对象,它可以接受两个参数,表示复数的实部和虚部,也可以只传入一个参数,此时表示复数的实部为该参数,虚部为0。
C语言isblank()函数:判断字符是否为空白字符 isblank()函数是C语言中的一个标准库函数,用于判断一个字符是否为标准空白字符(即空格' '和水平制表符'\t');如果参数c是一个标准空白字符,则返回true,否则返回false;
C语言isalpha()函数:判断字符是否为字母 isalpha()函数是C语言中的一个标准库函数;用于判断一个字符是否为字母(a-z或A-Z);如果参数c是一个字母(不区分大小写),则返回非0值,否则返回0;
C语言比较两个字符串 在C语言中,你不能像很多其它高级语言一样,直接使用 = 号对两个字符串进行比较以判断两者是否相同;在C语言,我们最常用的方法是借助strcmp()函数来进行字符串的比较。
Implementation of the USB 2.0 controller not found!解决方案 你可能在使用VirtualBox启动虚拟机系统时碰到“不能为虚拟电脑打开一个新的任务”的错误提示,并提示 Implementation of the USB 2.0 controller not found!