mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-23 22:27:38 -05:00
Instead of treating 0 is a default value, use http.DefaultMaxIdleConnsPerHost
This commit is contained in:
parent
db4cd8ee2d
commit
5b5e365295
4 changed files with 13 additions and 6 deletions
|
@ -108,7 +108,7 @@ func (p Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||||
if nameURL, err := url.Parse(host.Name); err == nil {
|
if nameURL, err := url.Parse(host.Name); err == nil {
|
||||||
outreq.Host = nameURL.Host
|
outreq.Host = nameURL.Host
|
||||||
if proxy == nil {
|
if proxy == nil {
|
||||||
proxy = NewSingleHostReverseProxy(nameURL, host.WithoutPathPrefix, 0)
|
proxy = NewSingleHostReverseProxy(nameURL, host.WithoutPathPrefix, http.DefaultMaxIdleConnsPerHost)
|
||||||
}
|
}
|
||||||
|
|
||||||
// use upstream credentials by default
|
// use upstream credentials by default
|
||||||
|
|
|
@ -716,7 +716,7 @@ func newFakeUpstream(name string, insecure bool) *fakeUpstream {
|
||||||
from: "/",
|
from: "/",
|
||||||
host: &UpstreamHost{
|
host: &UpstreamHost{
|
||||||
Name: name,
|
Name: name,
|
||||||
ReverseProxy: NewSingleHostReverseProxy(uri, "", 0),
|
ReverseProxy: NewSingleHostReverseProxy(uri, "", http.DefaultMaxIdleConnsPerHost),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if insecure {
|
if insecure {
|
||||||
|
@ -744,7 +744,7 @@ func (u *fakeUpstream) Select() *UpstreamHost {
|
||||||
}
|
}
|
||||||
u.host = &UpstreamHost{
|
u.host = &UpstreamHost{
|
||||||
Name: u.name,
|
Name: u.name,
|
||||||
ReverseProxy: NewSingleHostReverseProxy(uri, u.without, 0),
|
ReverseProxy: NewSingleHostReverseProxy(uri, u.without, http.DefaultMaxIdleConnsPerHost),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return u.host
|
return u.host
|
||||||
|
@ -785,7 +785,7 @@ func (u *fakeWsUpstream) Select() *UpstreamHost {
|
||||||
uri, _ := url.Parse(u.name)
|
uri, _ := url.Parse(u.name)
|
||||||
return &UpstreamHost{
|
return &UpstreamHost{
|
||||||
Name: u.name,
|
Name: u.name,
|
||||||
ReverseProxy: NewSingleHostReverseProxy(uri, u.without, 0),
|
ReverseProxy: NewSingleHostReverseProxy(uri, u.without, http.DefaultMaxIdleConnsPerHost),
|
||||||
UpstreamHeaders: http.Header{
|
UpstreamHeaders: http.Header{
|
||||||
"Connection": {"{>Connection}"},
|
"Connection": {"{>Connection}"},
|
||||||
"Upgrade": {"{>Upgrade}"}},
|
"Upgrade": {"{>Upgrade}"}},
|
||||||
|
|
|
@ -122,7 +122,10 @@ func NewSingleHostReverseProxy(target *url.URL, without string, keepalive int) *
|
||||||
rp.Transport = &http.Transport{
|
rp.Transport = &http.Transport{
|
||||||
Dial: socketDial(target.String()),
|
Dial: socketDial(target.String()),
|
||||||
}
|
}
|
||||||
} else if keepalive != 0 {
|
} else if keepalive != http.DefaultMaxIdleConnsPerHost {
|
||||||
|
// if keepalive is equal to the default,
|
||||||
|
// just use default transport, to avoid creating
|
||||||
|
// a brand new transport
|
||||||
rp.Transport = &http.Transport{
|
rp.Transport = &http.Transport{
|
||||||
Proxy: http.ProxyFromEnvironment,
|
Proxy: http.ProxyFromEnvironment,
|
||||||
Dial: (&net.Dialer{
|
Dial: (&net.Dialer{
|
||||||
|
@ -132,7 +135,7 @@ func NewSingleHostReverseProxy(target *url.URL, without string, keepalive int) *
|
||||||
TLSHandshakeTimeout: 10 * time.Second,
|
TLSHandshakeTimeout: 10 * time.Second,
|
||||||
ExpectContinueTimeout: 1 * time.Second,
|
ExpectContinueTimeout: 1 * time.Second,
|
||||||
}
|
}
|
||||||
if keepalive < 0 {
|
if keepalive == 0 {
|
||||||
rp.Transport.(*http.Transport).DisableKeepAlives = true
|
rp.Transport.(*http.Transport).DisableKeepAlives = true
|
||||||
} else {
|
} else {
|
||||||
rp.Transport.(*http.Transport).MaxIdleConnsPerHost = keepalive
|
rp.Transport.(*http.Transport).MaxIdleConnsPerHost = keepalive
|
||||||
|
|
|
@ -55,6 +55,7 @@ func NewStaticUpstreams(c caddyfile.Dispenser) ([]Upstream, error) {
|
||||||
FailTimeout: 10 * time.Second,
|
FailTimeout: 10 * time.Second,
|
||||||
MaxFails: 1,
|
MaxFails: 1,
|
||||||
MaxConns: 0,
|
MaxConns: 0,
|
||||||
|
KeepAlive: http.DefaultMaxIdleConnsPerHost,
|
||||||
}
|
}
|
||||||
|
|
||||||
if !c.Args(&upstream.from) {
|
if !c.Args(&upstream.from) {
|
||||||
|
@ -321,6 +322,9 @@ func parseBlock(c *caddyfile.Dispenser, u *staticUpstream) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if n < 0 {
|
||||||
|
return c.ArgErr()
|
||||||
|
}
|
||||||
u.KeepAlive = n
|
u.KeepAlive = n
|
||||||
default:
|
default:
|
||||||
return c.Errf("unknown property '%s'", c.Val())
|
return c.Errf("unknown property '%s'", c.Val())
|
||||||
|
|
Loading…
Reference in a new issue