mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-23 22:27:38 -05:00
Merge pull request #345 from tw4452852/my_proxy
proxy: make http header block scoped
This commit is contained in:
commit
280ba9db85
2 changed files with 17 additions and 14 deletions
|
@ -98,11 +98,6 @@ func TestWebSocketReverseProxyFromWSClient(t *testing.T) {
|
||||||
// also sets up the rules/environment for testing WebSocket
|
// also sets up the rules/environment for testing WebSocket
|
||||||
// proxy.
|
// proxy.
|
||||||
func newWebSocketTestProxy(backendAddr string) *Proxy {
|
func newWebSocketTestProxy(backendAddr string) *Proxy {
|
||||||
proxyHeaders = http.Header{
|
|
||||||
"Connection": {"{>Connection}"},
|
|
||||||
"Upgrade": {"{>Upgrade}"},
|
|
||||||
}
|
|
||||||
|
|
||||||
return &Proxy{
|
return &Proxy{
|
||||||
Upstreams: []Upstream{&fakeUpstream{name: backendAddr}},
|
Upstreams: []Upstream{&fakeUpstream{name: backendAddr}},
|
||||||
}
|
}
|
||||||
|
@ -121,7 +116,9 @@ func (u *fakeUpstream) Select() *UpstreamHost {
|
||||||
return &UpstreamHost{
|
return &UpstreamHost{
|
||||||
Name: u.name,
|
Name: u.name,
|
||||||
ReverseProxy: NewSingleHostReverseProxy(uri, ""),
|
ReverseProxy: NewSingleHostReverseProxy(uri, ""),
|
||||||
ExtraHeaders: proxyHeaders,
|
ExtraHeaders: http.Header{
|
||||||
|
"Connection": {"{>Connection}"},
|
||||||
|
"Upgrade": {"{>Upgrade}"}},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,13 @@ import (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
supportedPolicies = make(map[string]func() Policy)
|
supportedPolicies = make(map[string]func() Policy)
|
||||||
proxyHeaders = make(http.Header)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type staticUpstream struct {
|
type staticUpstream struct {
|
||||||
from string
|
from string
|
||||||
Hosts HostPool
|
proxyHeaders http.Header
|
||||||
Policy Policy
|
Hosts HostPool
|
||||||
|
Policy Policy
|
||||||
|
|
||||||
FailTimeout time.Duration
|
FailTimeout time.Duration
|
||||||
MaxFails int32
|
MaxFails int32
|
||||||
|
@ -72,7 +72,7 @@ func NewStaticUpstreams(c parse.Dispenser) ([]Upstream, error) {
|
||||||
Fails: 0,
|
Fails: 0,
|
||||||
FailTimeout: upstream.FailTimeout,
|
FailTimeout: upstream.FailTimeout,
|
||||||
Unhealthy: false,
|
Unhealthy: false,
|
||||||
ExtraHeaders: proxyHeaders,
|
ExtraHeaders: upstream.proxyHeaders,
|
||||||
CheckDown: func(upstream *staticUpstream) UpstreamHostDownFunc {
|
CheckDown: func(upstream *staticUpstream) UpstreamHostDownFunc {
|
||||||
return func(uh *UpstreamHost) bool {
|
return func(uh *UpstreamHost) bool {
|
||||||
if uh.Unhealthy {
|
if uh.Unhealthy {
|
||||||
|
@ -159,10 +159,16 @@ func parseBlock(c *parse.Dispenser, u *staticUpstream) error {
|
||||||
if !c.Args(&header, &value) {
|
if !c.Args(&header, &value) {
|
||||||
return c.ArgErr()
|
return c.ArgErr()
|
||||||
}
|
}
|
||||||
proxyHeaders.Add(header, value)
|
if u.proxyHeaders == nil {
|
||||||
|
u.proxyHeaders = make(http.Header)
|
||||||
|
}
|
||||||
|
u.proxyHeaders.Add(header, value)
|
||||||
case "websocket":
|
case "websocket":
|
||||||
proxyHeaders.Add("Connection", "{>Connection}")
|
if u.proxyHeaders == nil {
|
||||||
proxyHeaders.Add("Upgrade", "{>Upgrade}")
|
u.proxyHeaders = make(http.Header)
|
||||||
|
}
|
||||||
|
u.proxyHeaders.Add("Connection", "{>Connection}")
|
||||||
|
u.proxyHeaders.Add("Upgrade", "{>Upgrade}")
|
||||||
case "without":
|
case "without":
|
||||||
if !c.NextArg() {
|
if !c.NextArg() {
|
||||||
return c.ArgErr()
|
return c.ArgErr()
|
||||||
|
|
Loading…
Reference in a new issue