From e2ee5bab1b1bb1159c06f407b12665fe5c31f6d1 Mon Sep 17 00:00:00 2001 From: Umputun Date: Fri, 15 Mar 2024 17:49:11 -0500 Subject: [PATCH] fix forwarded url, has to be earlier and constructed --- app/proxy/proxy.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/proxy/proxy.go b/app/proxy/proxy.go index 03edeb9..c6abec4 100644 --- a/app/proxy/proxy.go +++ b/app/proxy/proxy.go @@ -212,10 +212,13 @@ func (h *Http) proxyHandler() http.HandlerFunc { uu := ctx.Value(ctxURL).(*url.URL) keepHost := ctx.Value(ctxKeepHost).(bool) r.Header.Add("X-Forwarded-Host", r.Host) + scheme := "http" if h.SSLConfig.SSLMode == SSLAuto || h.SSLConfig.SSLMode == SSLStatic { h.setHeaderIfNotExists(r, "X-Forwarded-Proto", "https") h.setHeaderIfNotExists(r, "X-Forwarded-Port", "443") + scheme = "https" } + r.Header.Set("X-Forwarded-URL", fmt.Sprintf("%s://%s%s", scheme, r.Host, r.URL.String())) r.URL.Path = uu.Path r.URL.Host = uu.Host r.URL.Scheme = uu.Scheme @@ -223,7 +226,6 @@ func (h *Http) proxyHandler() http.HandlerFunc { if !keepHost { r.Host = uu.Host } - r.Header.Set("X-Forwarded-URL", r.URL.String()) h.setXRealIP(r) }, Transport: &http.Transport{