在 Gin 框架中,SetTrustedProxies 是一个设置函数,用于指定哪些代理可以信任并发送请求头 X-Forwarded-For 和 X-Real-IP。
当使用 Gin 构建 API 服务器时,通常部署在反向代理(例如 Nginx)后面。客户端的请求通过反向代理转发到 Gin 服务器,Gin 服务器通过 X-Forwarded-For 和 X-Real-IP 获取客户端的真实 IP 地址。
默认情况下,Gin 会信任所有的代理服务器,这意味着所有的代理服务器都会被 Gin 认为是可信任的,并将它们的 IP 地址作为 X-Forwarded-For 和 X-Real-IP 的值。这可能会导致安全问题,因为攻击者可以通过伪造代理服务器的 IP 地址来攻击你的服务器。
为了解决这个问题,Gin 提供了 SetTrustedProxies 方法,可以指定哪些代理可以信任。这个方法接收一个字符串切片参数,参数中的每个字符串都代表一个可以信任的代理服务器 IP 地址。例如:
func main() {
router := gin.Default()
// 设置 Gin 只信任本机的代理服务器
router.SetTrustedProxies([]string{"127.0.0.1"})
// ...
}
在上面的例子中,Gin 只信任本机的代理服务器,即只有来自 127.0.0.1 的请求会被 Gin 认为是可信任的,并将它们的 IP 地址作为 X-Forwarded-For 和 X-Real-IP 的值。其他代理服务器的 IP 地址会被 Gin 忽略。这样可以有效地防止攻击者通过伪造代理服务器的 IP 地址来攻击你的服务器。