From 9b2d0874fb1115423c329e8e4f337f145e65540b Mon Sep 17 00:00:00 2001 From: qhd <1766646056@qq.com> Date: Mon, 13 Apr 2026 14:52:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=BF=E6=8D=A2=E9=9D=9E=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=AE=9E=E4=BE=8B=E5=9C=B0=E5=9D=80=E4=B8=BAConsul?= =?UTF-8?q?=E9=85=8D=E7=BD=AEIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/main.go b/main.go index fe26e9e..5211973 100644 --- a/main.go +++ b/main.go @@ -59,6 +59,28 @@ func StartServerProxy() { }) return } + + // 1. 解析 consul 配置地址 + consulAddr := g.Cfg().MustGet(r.GetCtx(), "consul.address").String() + consulAddrList := strings.Split(consulAddr, ":") + if len(consulAddrList) < 1 { + g.Log().Error(r.GetCtx(), "consul.address 配置格式错误") + r.Response.WriteJsonExit(map[string]interface{}{ + "success": false, + "code": 500, + "message": fmt.Sprintf("consul.address 配置格式错误:%s", consulAddr), + }) + return + } + ipStr := instanceAddr + if strings.Contains(instanceAddr, ":") { + ipStr = strings.Split(instanceAddr, ":")[0] + } + // 2. 如果不是本地IP,则替换为consul配置的IP + if !utils.IsLocalIP(ipStr) { + instanceAddr = strings.Replace(instanceAddr, ipStr, consulAddrList[0], 1) + } + r.Request.URL.Path = strings.Replace(r.Request.URL.Path, fmt.Sprintf("%s/", serverName), "", 1) r.MakeBodyRepeatableRead(false) u, _ := url.Parse(fmt.Sprintf("%s://%s", "http", instanceAddr))