mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
add $upstream_name
This commit is contained in:
parent
59f4eaf3ea
commit
2f275ca81e
3 changed files with 12 additions and 6 deletions
|
@ -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"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -37,11 +37,13 @@ const (
|
||||||
VarRemoteHost = "$remote_host"
|
VarRemoteHost = "$remote_host"
|
||||||
VarRemotePort = "$remote_port"
|
VarRemotePort = "$remote_port"
|
||||||
VarRemoteAddr = "$remote_addr"
|
VarRemoteAddr = "$remote_addr"
|
||||||
VarUpstreamScheme = "$upstream_scheme"
|
|
||||||
VarUpstreamHost = "$upstream_host"
|
VarUpstreamName = "$upstream_name"
|
||||||
VarUpstreamPort = "$upstream_port"
|
VarUpstreamScheme = "$upstream_scheme"
|
||||||
VarUpstreamAddr = "$upstream_addr"
|
VarUpstreamHost = "$upstream_host"
|
||||||
VarUpstreamURL = "$upstream_url"
|
VarUpstreamPort = "$upstream_port"
|
||||||
|
VarUpstreamAddr = "$upstream_addr"
|
||||||
|
VarUpstreamURL = "$upstream_url"
|
||||||
|
|
||||||
VarRespContentType = "$resp_content_type"
|
VarRespContentType = "$resp_content_type"
|
||||||
VarRespContentLen = "$resp_content_length"
|
VarRespContentLen = "$resp_content_length"
|
||||||
|
@ -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) },
|
||||||
|
|
Loading…
Add table
Reference in a new issue