diff --git a/cmd/traefik/traefik.go b/cmd/traefik/traefik.go index 00683f9fd..8eaf27c72 100644 --- a/cmd/traefik/traefik.go +++ b/cmd/traefik/traefik.go @@ -27,6 +27,7 @@ import ( "github.com/traefik/traefik/v3/cmd" "github.com/traefik/traefik/v3/cmd/healthcheck" cmdVersion "github.com/traefik/traefik/v3/cmd/version" + _ "github.com/traefik/traefik/v3/init" tcli "github.com/traefik/traefik/v3/pkg/cli" "github.com/traefik/traefik/v3/pkg/collector" "github.com/traefik/traefik/v3/pkg/config/dynamic" diff --git a/init/init.go b/init/init.go new file mode 100644 index 000000000..e54655d0f --- /dev/null +++ b/init/init.go @@ -0,0 +1,21 @@ +package init + +import ( + "os" + "strings" +) + +// This makes use of the GODEBUG flag `http2xconnect` to deactivate the connect setting for HTTP2 by default. +// This type of upgrade is yet incompatible with `net/http` http1 reverse proxy. +// Please see https://github.com/golang/go/issues/71128#issuecomment-2574193636. +func init() { + goDebug := os.Getenv("GODEBUG") + if strings.Contains(goDebug, "http2xconnect") { + return + } + + if len(goDebug) > 0 { + goDebug += "," + } + os.Setenv("GODEBUG", goDebug+"http2xconnect=0") +}