From 2f275ca81ed91d27a328140273bedcc07a85f514 Mon Sep 17 00:00:00 2001 From: yusing Date: Mon, 16 Dec 2024 10:29:49 +0800 Subject: [PATCH] add $upstream_name --- internal/net/http/header_utils.go | 1 + .../net/http/middleware/set_upstream_headers.go | 4 +++- internal/net/http/middleware/vars.go | 13 ++++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/internal/net/http/header_utils.go b/internal/net/http/header_utils.go index d804d15..f086c07 100644 --- a/internal/net/http/header_utils.go +++ b/internal/net/http/header_utils.go @@ -13,6 +13,7 @@ const ( HeaderXForwardedURI = "X-Forwarded-Uri" HeaderXRealIP = "X-Real-IP" + HeaderUpstreamName = "X-GoDoxy-Upstream-Name" HeaderUpstreamScheme = "X-GoDoxy-Upstream-Scheme" HeaderUpstreamHost = "X-GoDoxy-Upstream-Host" HeaderUpstreamPort = "X-GoDoxy-Upstream-Port" diff --git a/internal/net/http/middleware/set_upstream_headers.go b/internal/net/http/middleware/set_upstream_headers.go index fdde0f5..e963cbf 100644 --- a/internal/net/http/middleware/set_upstream_headers.go +++ b/internal/net/http/middleware/set_upstream_headers.go @@ -8,13 +8,14 @@ import ( // internal use only. type setUpstreamHeaders struct { - Scheme, Host, Port string + Name, Scheme, Host, Port string } var suh = NewMiddleware[setUpstreamHeaders]() func newSetUpstreamHeaders(rp *gphttp.ReverseProxy) *Middleware { m, err := suh.New(OptionsRaw{ + "name": rp.TargetName, "scheme": rp.TargetURL.Scheme, "host": rp.TargetURL.Hostname(), "port": rp.TargetURL.Port(), @@ -27,6 +28,7 @@ func newSetUpstreamHeaders(rp *gphttp.ReverseProxy) *Middleware { // before implements RequestModifier. func (s setUpstreamHeaders) before(w http.ResponseWriter, r *http.Request) (proceed bool) { + r.Header.Set(gphttp.HeaderUpstreamName, s.Name) r.Header.Set(gphttp.HeaderUpstreamScheme, s.Scheme) r.Header.Set(gphttp.HeaderUpstreamHost, s.Host) r.Header.Set(gphttp.HeaderUpstreamPort, s.Port) diff --git a/internal/net/http/middleware/vars.go b/internal/net/http/middleware/vars.go index 7ef8c91..0830542 100644 --- a/internal/net/http/middleware/vars.go +++ b/internal/net/http/middleware/vars.go @@ -37,11 +37,13 @@ const ( VarRemoteHost = "$remote_host" VarRemotePort = "$remote_port" VarRemoteAddr = "$remote_addr" - VarUpstreamScheme = "$upstream_scheme" - VarUpstreamHost = "$upstream_host" - VarUpstreamPort = "$upstream_port" - VarUpstreamAddr = "$upstream_addr" - VarUpstreamURL = "$upstream_url" + + VarUpstreamName = "$upstream_name" + VarUpstreamScheme = "$upstream_scheme" + VarUpstreamHost = "$upstream_host" + VarUpstreamPort = "$upstream_port" + VarUpstreamAddr = "$upstream_addr" + VarUpstreamURL = "$upstream_url" VarRespContentType = "$resp_content_type" VarRespContentLen = "$resp_content_length" @@ -89,6 +91,7 @@ var staticReqVarSubsMap = map[string]reqVarGetter{ return "" }, VarRemoteAddr: func(req *http.Request) string { return req.RemoteAddr }, + VarUpstreamName: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamName) }, VarUpstreamScheme: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamScheme) }, VarUpstreamHost: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamHost) }, VarUpstreamPort: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamPort) },