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))