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

分类: 计算机技术
推荐阅读:
Golang实现获取指定长度的随机字符串 本文将详细的介绍Go语言中如何正确使用rand.Intn()函数作为核心,来生成指定长度的随机字符串。
WordPress如何禁用Emoji表情 由于WordPress自带的Emoji表情服务需要连接到国外服务器,国内用户访问比较慢、不稳定,影响体验,且大部分用户根本用不到;这个服务应该禁用。
没有main()函数的C语言程序 有两种方法可以不添加main()函数来运行C语言程序,第一种用#define预处理指令,第二种是使用-nostartfiles编译选项;
Rust解析JSON,结构体序列化和反序列化 JSON一种常用的由键值对组成的数据对象;本文将通过多个例子讲解在Rust中如何解析JSON内容,以及如何将结构体转换成JSON字符串。
spim:(parser) Label is defined for the second time 解决方法 在使用QtSpim读取汇编语言文件时提示:Label is defined for the second time on line xx of file xxx main:,出现这个错误是因为你没有在载入文件前初始化你的模拟器;
Golang逐行读取文本文件 当文件过大,不适合一次性载入内存,且文件每行都包含特定信息时,我们就需要逐行读取文件来保证程序的性能;