mirror of
https://github.com/kemko/reproxy.git
synced 2026-01-01 15:55:49 +03:00
add the X-Forwarded-Proto and X-Forwarded-Port headers for SSLAuto mode
This commit is contained in:
@@ -157,7 +157,7 @@ In case if rules set as a part of docker compose environment, destination with t
|
|||||||
|
|
||||||
## SSL support
|
## SSL support
|
||||||
|
|
||||||
SSL mode (by default none) can be set to `auto` (ACME/LE certificates), `static` (existing certificate) or `none`. If `auto` turned on SSL certificate will be issued automatically for all discovered server names. User can override it by setting `--ssl.fqdn` value(s)
|
SSL mode (by default none) can be set to `auto` (ACME/LE certificates), `static` (existing certificate) or `none`. If `auto` turned on SSL certificate will be issued automatically for all discovered server names. User can override it by setting `--ssl.fqdn` value(s). In `auto` SSL mode, Reproxy will automatically add the `X-Forwarded-Proto` and `X-Forwarded-Port` headers. These headers are useful for services behind the proxy to know the original protocol (http or https) and port number used by the client.
|
||||||
|
|
||||||
## Headers
|
## Headers
|
||||||
|
|
||||||
|
|||||||
@@ -212,6 +212,10 @@ func (h *Http) proxyHandler() http.HandlerFunc {
|
|||||||
uu := ctx.Value(ctxURL).(*url.URL)
|
uu := ctx.Value(ctxURL).(*url.URL)
|
||||||
keepHost := ctx.Value(ctxKeepHost).(bool)
|
keepHost := ctx.Value(ctxKeepHost).(bool)
|
||||||
r.Header.Add("X-Forwarded-Host", r.Host)
|
r.Header.Add("X-Forwarded-Host", r.Host)
|
||||||
|
if h.SSLConfig.SSLMode == SSLAuto {
|
||||||
|
r.Header.Add("X-Forwarded-Proto", "https")
|
||||||
|
r.Header.Add("X-Forwarded-Port", "443")
|
||||||
|
}
|
||||||
r.URL.Path = uu.Path
|
r.URL.Path = uu.Path
|
||||||
r.URL.Host = uu.Host
|
r.URL.Host = uu.Host
|
||||||
r.URL.Scheme = uu.Scheme
|
r.URL.Scheme = uu.Scheme
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ func TestHttp_Do(t *testing.T) {
|
|||||||
w.Header().Add("h1", "v1")
|
w.Header().Add("h1", "v1")
|
||||||
require.Equal(t, "127.0.0.1", r.Header.Get("X-Real-IP"))
|
require.Equal(t, "127.0.0.1", r.Header.Get("X-Real-IP"))
|
||||||
require.Equal(t, "127.0.0.1", r.Header.Get("X-Forwarded-For"))
|
require.Equal(t, "127.0.0.1", r.Header.Get("X-Forwarded-For"))
|
||||||
|
require.Empty(t, r.Header.Get("X-Forwarded-Proto")) // ssl auto only
|
||||||
|
require.Empty(t, r.Header.Get("X-Forwarded-Port"))
|
||||||
fmt.Fprintf(w, "response %s", r.URL.String())
|
fmt.Fprintf(w, "response %s", r.URL.String())
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user