diff --git a/agent/internal/traefik/l4.go b/agent/internal/traefik/l4.go index 5e94d5c8..20c513b1 100644 --- a/agent/internal/traefik/l4.go +++ b/agent/internal/traefik/l4.go @@ -49,7 +49,10 @@ func CompileRoutes(httpRoutes []TraefikRoute, tcpRoutes []TraefikTCPRoute, udpRo } var middlewareNames []string if serverName != "" { - config.HTTP.Middlewares["forwarded_server"] = middleware{Headers: &headersMiddleware{CustomRequestHeaders: map[string]string{"X-Forwarded-Server": serverName}}} + config.HTTP.Middlewares["forwarded_server"] = middleware{Headers: &headersMiddleware{ + CustomRequestHeaders: map[string]string{"X-Forwarded-Server": serverName}, + CustomResponseHeaders: map[string]string{"X-Techulus-Host": serverName}, + }} middlewareNames = []string{"forwarded_server@file"} } for _, route := range httpRoutes { diff --git a/agent/internal/traefik/routes_test.go b/agent/internal/traefik/routes_test.go index 911dc6ea..ff9a9734 100644 --- a/agent/internal/traefik/routes_test.go +++ b/agent/internal/traefik/routes_test.go @@ -84,6 +84,9 @@ func TestRoutesConfigRoundTripProducesConvergentHash(t *testing.T) { if forwardedServer.Headers == nil || forwardedServer.Headers.CustomRequestHeaders["X-Forwarded-Server"] != "proxy-1" { t.Fatalf("forwarded server middleware was not preserved: %#v", forwardedServer) } + if forwardedServer.Headers.CustomResponseHeaders["X-Techulus-Host"] != "proxy-1" { + t.Fatalf("Techulus host response header was not preserved: %#v", forwardedServer) + } tcpRouter := config.TCP.Routers[resourceName("tcp", "service-tcp", "tcp-route")] if tcpRouter.TLS == nil || !tcpRouter.TLS.Passthrough { t.Fatalf("TCP TLS passthrough was not preserved: %#v", tcpRouter) diff --git a/agent/internal/traefik/types.go b/agent/internal/traefik/types.go index 6fabff48..0ed5237a 100644 --- a/agent/internal/traefik/types.go +++ b/agent/internal/traefik/types.go @@ -69,7 +69,8 @@ type middleware struct { } type headersMiddleware struct { - CustomRequestHeaders map[string]string `yaml:"customRequestHeaders,omitempty"` + CustomRequestHeaders map[string]string `yaml:"customRequestHeaders,omitempty"` + CustomResponseHeaders map[string]string `yaml:"customResponseHeaders,omitempty"` } type replacePathRegex struct {