From c02a8413275e402ba1812dd27962dcb11f275ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E5=B3=B0?= Date: Thu, 28 May 2026 16:36:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=94=A8=20TrustedPlatform=20=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3=20SetTrustedProxies=20=E8=8E=B7=E5=8F=96=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=20IP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SetTrustedProxies 在 Unix socket 下无效:socket 连接的 RemoteAddr 是 UnixAddr(如'@'),无法匹配任何 CIDR,Gin 跳过 header 解析。 TrustedPlatform 直接从指定 header 取值,不做来源校验,才是 Unix socket 反代的正确方案。 --- main.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 82518a2..57db0ac 100644 --- a/main.go +++ b/main.go @@ -83,10 +83,10 @@ func main() { r := gin.Default() - // 信任反向代理,从 X-Real-IP / X-Forwarded-For 获取真实客户端 IP - // Unix socket 下无法按来源 IP 判断信任,全信任(安全边界由 Caddy 把控) - _ = r.SetTrustedProxies([]string{"0.0.0.0/0", "::/0"}) - r.RemoteIPHeaders = []string{"X-Real-IP", "X-Forwarded-For"} + // 信任反向代理传来的真实 IP + // TrustedPlatform 直接从指定 header 取 IP,不做来源校验 + // 这是 Unix socket 反代的正确做法(socket 连接没有来源 IP,无法做 CIDR 匹配) + r.TrustedPlatform = "X-Real-IP" // 加载 HTML 模板 r.SetHTMLTemplate(loadTemplates())