add $upstream_name

This commit is contained in:
yusing 2024-12-16 10:29:49 +08:00
parent 59f4eaf3ea
commit 2f275ca81e
3 changed files with 12 additions and 6 deletions

View file

@ -13,6 +13,7 @@ const (
HeaderXForwardedURI = "X-Forwarded-Uri" HeaderXForwardedURI = "X-Forwarded-Uri"
HeaderXRealIP = "X-Real-IP" HeaderXRealIP = "X-Real-IP"
HeaderUpstreamName = "X-GoDoxy-Upstream-Name"
HeaderUpstreamScheme = "X-GoDoxy-Upstream-Scheme" HeaderUpstreamScheme = "X-GoDoxy-Upstream-Scheme"
HeaderUpstreamHost = "X-GoDoxy-Upstream-Host" HeaderUpstreamHost = "X-GoDoxy-Upstream-Host"
HeaderUpstreamPort = "X-GoDoxy-Upstream-Port" HeaderUpstreamPort = "X-GoDoxy-Upstream-Port"

View file

@ -8,13 +8,14 @@ import (
// internal use only. // internal use only.
type setUpstreamHeaders struct { type setUpstreamHeaders struct {
Scheme, Host, Port string Name, Scheme, Host, Port string
} }
var suh = NewMiddleware[setUpstreamHeaders]() var suh = NewMiddleware[setUpstreamHeaders]()
func newSetUpstreamHeaders(rp *gphttp.ReverseProxy) *Middleware { func newSetUpstreamHeaders(rp *gphttp.ReverseProxy) *Middleware {
m, err := suh.New(OptionsRaw{ m, err := suh.New(OptionsRaw{
"name": rp.TargetName,
"scheme": rp.TargetURL.Scheme, "scheme": rp.TargetURL.Scheme,
"host": rp.TargetURL.Hostname(), "host": rp.TargetURL.Hostname(),
"port": rp.TargetURL.Port(), "port": rp.TargetURL.Port(),
@ -27,6 +28,7 @@ func newSetUpstreamHeaders(rp *gphttp.ReverseProxy) *Middleware {
// before implements RequestModifier. // before implements RequestModifier.
func (s setUpstreamHeaders) before(w http.ResponseWriter, r *http.Request) (proceed bool) { 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.HeaderUpstreamScheme, s.Scheme)
r.Header.Set(gphttp.HeaderUpstreamHost, s.Host) r.Header.Set(gphttp.HeaderUpstreamHost, s.Host)
r.Header.Set(gphttp.HeaderUpstreamPort, s.Port) r.Header.Set(gphttp.HeaderUpstreamPort, s.Port)

View file

@ -37,6 +37,8 @@ const (
VarRemoteHost = "$remote_host" VarRemoteHost = "$remote_host"
VarRemotePort = "$remote_port" VarRemotePort = "$remote_port"
VarRemoteAddr = "$remote_addr" VarRemoteAddr = "$remote_addr"
VarUpstreamName = "$upstream_name"
VarUpstreamScheme = "$upstream_scheme" VarUpstreamScheme = "$upstream_scheme"
VarUpstreamHost = "$upstream_host" VarUpstreamHost = "$upstream_host"
VarUpstreamPort = "$upstream_port" VarUpstreamPort = "$upstream_port"
@ -89,6 +91,7 @@ var staticReqVarSubsMap = map[string]reqVarGetter{
return "" return ""
}, },
VarRemoteAddr: func(req *http.Request) string { return req.RemoteAddr }, 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) }, VarUpstreamScheme: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamScheme) },
VarUpstreamHost: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamHost) }, VarUpstreamHost: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamHost) },
VarUpstreamPort: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamPort) }, VarUpstreamPort: func(req *http.Request) string { return req.Header.Get(gphttp.HeaderUpstreamPort) },