[优化] 增加中继 Vhost HTTP 端口支持并优化相关逻辑

This commit is contained in:
ryan
2026-06-01 21:02:15 +08:00
parent 3b979eb5d5
commit 9632b4e3b8
7 changed files with 61 additions and 8 deletions
+7 -6
View File
@@ -568,17 +568,18 @@ func buildSnapshotRoutes(routes []*model.ProxyRoute) ([]snapshotRoute, error) {
}
func resolveTunnelOpenRestyUpstreamURL() string {
port := 8080
relayNodes, err := model.ListNodesByType("tunnel_relay")
if err == nil {
if err == nil && len(relayNodes) > 0 {
for _, node := range relayNodes {
if node != nil && node.RelayVhostHTTPPort > 0 {
port = node.RelayVhostHTTPPort
break
if node != nil {
addr := relayAgentAddress(node)
if addr != "" {
return "http://" + addr
}
}
}
}
return fmt.Sprintf("http://127.0.0.1:%d", port)
return "http://127.0.0.1:8080"
}
func buildSnapshotWAFDocument(routes []*model.ProxyRoute) (snapshotWAFDocument, error) {
+27
View File
@@ -436,6 +436,33 @@ func relayClientAddress(node *model.Node) string {
return fmt.Sprintf("%s:%d", addr, port)
}
func relayAgentAddress(node *model.Node) string {
if node == nil {
return ""
}
port := node.RelayVhostHTTPPort
if port <= 0 {
port = 8080
}
addr := strings.TrimSpace(node.RelayAgentAccessAddr)
if addr == "" {
addr = strings.TrimSpace(node.RelayClientAccessAddr)
}
if addr == "" {
addr = strings.TrimSpace(node.IP)
}
if addr == "" {
return fmt.Sprintf("127.0.0.1:%d", port)
}
if _, _, err := net.SplitHostPort(addr); err == nil {
return addr
}
if strings.Contains(addr, ":") && strings.Count(addr, ":") > 1 {
return net.JoinHostPort(addr, strconv.Itoa(port))
}
return fmt.Sprintf("%s:%d", addr, port)
}
func parseTunnelTargetAddr(addr string) (string, int) {
addr = strings.TrimSpace(addr)
if addr == "" {
+1 -1
View File
@@ -348,7 +348,7 @@ func TestTunnelRoutePublishAndFlaredConfigUseRelayPorts(t *testing.T) {
if err != nil {
t.Fatalf("PublishConfigVersion failed: %v", err)
}
if !strings.Contains(result.Version.RenderedConfig, "server 127.0.0.1:18080 max_fails=3 fail_timeout=10s;") {
if !strings.Contains(result.Version.RenderedConfig, "server de-e:18080 max_fails=3 fail_timeout=10s;") {
t.Fatalf("expected rendered OpenResty upstream to use relay vhost port, got:\n%s", result.Version.RenderedConfig)
}