diff --git a/app/vmselect/main.go b/app/vmselect/main.go index 3a06a0cc6..c7ce0c8c5 100644 --- a/app/vmselect/main.go +++ b/app/vmselect/main.go @@ -9,7 +9,6 @@ import ( "net/http/httputil" "net/url" "os" - "path" "strings" "time" @@ -703,10 +702,14 @@ func mayProxyVMAlertRequests(w http.ResponseWriter, r *http.Request, path, stubR panic(err) }() r.URL.Path = strings.TrimPrefix(path, "prometheus") - vmalertReverseProxy.ServeHTTP(w, r) + r.Host = vmalertProxyHost + vmalertProxy.ServeHTTP(w, r) } -var vmalertReverseProxy *httputil.ReverseProxy +var ( + vmalertProxyHost string + vmalertProxy *httputil.ReverseProxy +) // initVMAlertProxy must be called after flag.Parse(), since it uses command-line flags. func initVMAlertProxy() { @@ -715,24 +718,8 @@ func initVMAlertProxy() { } proxyURL, err := url.Parse(*vmalertProxyURL) if err != nil { - logger.Fatalf("cannot parse vmalertProxyURL=%q : %s", *vmalertProxyURL, err) - } - vmalertReverseProxy = &httputil.ReverseProxy{ - Director: func(r *http.Request) { - proxyURLCopy := *proxyURL - proxyURLCopy.Path = path.Join(proxyURL.Path, r.URL.Path) - r.URL = &proxyURLCopy - r.Host = proxyURLCopy.Host - }, - Transport: func() *http.Transport { - tr := http.DefaultTransport.(*http.Transport).Clone() - // Automatic compression must be disabled in order to fix https://github.com/VictoriaMetrics/VictoriaMetrics/issues/535 - tr.DisableCompression = true - // Disable HTTP/2.0, since VictoriaMetrics components don't support HTTP/2.0 (because there is no sense in this). - tr.ForceAttemptHTTP2 = false - return tr - }(), - FlushInterval: time.Second, - ErrorLog: logger.StdErrorLogger(), + logger.Fatalf("cannot parse -vmalert.proxyURL=%q: %s", *vmalertProxyURL, err) } + vmalertProxyHost = proxyURL.Host + vmalertProxy = httputil.NewSingleHostReverseProxy(proxyURL) }