gin框架中设置信任代理IP并获取远程客户端IP


package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
        gin.SetMode("release")  // 设置为生产模式
	r := gin.Default()
	r.SetTrustedProxies([]string{"172.19.10.12"})  // 设置受信任代理,如果不设置默认信任所有代理,不安全
	r.GET("/ping", func(c *gin.Context) {
		// RemoteIP() 无代理返回客户端IP,有代理返回代理IP
		fmt.Println(c.RemoteIP())
		// ClientIP() 无论是否有代理,都会返回客户端IP
		// 如果有代理的情况下,代理需要添加header头,X-Real-IP或X-Forwarded-IP
                // 当然也有个前提条件,代理IP必须已经加入到了受信任的代理中了,否则只会返回代理IP,不会返回客户端IP
		fmt.Println(c.ClientIP())
		c.JSON(200, gin.H{
			"message": "go语言中文文档www.topgoer.com",
		})
	})
	r.Run("172.19.10.13:8080") // listen and serve on 0.0.0.0:8080
}

gin