feat: 替换非本地实例地址为Consul配置IP

This commit is contained in:
2026-04-13 14:52:08 +08:00
parent 92c4915304
commit 9b2d0874fb

22
main.go
View File

@@ -59,6 +59,28 @@ func StartServerProxy() {
}) })
return 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.Request.URL.Path = strings.Replace(r.Request.URL.Path, fmt.Sprintf("%s/", serverName), "", 1)
r.MakeBodyRepeatableRead(false) r.MakeBodyRepeatableRead(false)
u, _ := url.Parse(fmt.Sprintf("%s://%s", "http", instanceAddr)) u, _ := url.Parse(fmt.Sprintf("%s://%s", "http", instanceAddr))