diff options
author | Francis Lavoie <lavofr@gmail.com> | 2020-10-30 14:05:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-30 12:05:21 -0600 |
commit | b66099379d065ec3340cbe147f65dcf0a39e8e52 (patch) | |
tree | f1625b31777c34c7be5afb743a412db1c0dc5381 /modules/caddyhttp/reverseproxy | |
parent | c9fdff9976da38c650a51cd3fb4f2667853ff627 (diff) |
reverseproxy: Add max_idle_conns_per_host; fix godocs (#3829)
Diffstat (limited to 'modules/caddyhttp/reverseproxy')
-rw-r--r-- | modules/caddyhttp/reverseproxy/caddyfile.go | 28 | ||||
-rw-r--r-- | modules/caddyhttp/reverseproxy/httptransport.go | 4 |
2 files changed, 31 insertions, 1 deletions
diff --git a/modules/caddyhttp/reverseproxy/caddyfile.go b/modules/caddyhttp/reverseproxy/caddyfile.go index 193487a..7fa118c 100644 --- a/modules/caddyhttp/reverseproxy/caddyfile.go +++ b/modules/caddyhttp/reverseproxy/caddyfile.go @@ -72,6 +72,7 @@ func parseCaddyfile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) // // # streaming // flush_interval <duration> +// buffer_requests // // # header manipulation // header_up [+|-]<field> [<value|regexp> [<replacement>]] @@ -588,13 +589,18 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { // read_buffer <size> // write_buffer <size> // dial_timeout <duration> -// tls_client_auth <cert_file> <key_file> +// tls +// tls_client_auth <automate_name> | <cert_file> <key_file> // tls_insecure_skip_verify // tls_timeout <duration> // tls_trusted_ca_certs <cert_files...> +// tls_server_name <sni> // keepalive [off|<duration>] // keepalive_idle_conns <max_count> // versions <versions...> +// compression off +// max_conns_per_host <count> +// max_idle_conns_per_host <count> // } // func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { @@ -738,6 +744,26 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } } + case "max_conns_per_host": + if !d.NextArg() { + return d.ArgErr() + } + num, err := strconv.Atoi(d.Val()) + if err != nil { + return d.Errf("bad integer value '%s': %v", d.Val(), err) + } + h.MaxConnsPerHost = num + + case "max_idle_conns_per_host": + if !d.NextArg() { + return d.ArgErr() + } + num, err := strconv.Atoi(d.Val()) + if err != nil { + return d.Errf("bad integer value '%s': %v", d.Val(), err) + } + h.MaxIdleConnsPerHost = num + default: return d.Errf("unrecognized subdirective %s", d.Val()) } diff --git a/modules/caddyhttp/reverseproxy/httptransport.go b/modules/caddyhttp/reverseproxy/httptransport.go index dce7b9e..d2a9951 100644 --- a/modules/caddyhttp/reverseproxy/httptransport.go +++ b/modules/caddyhttp/reverseproxy/httptransport.go @@ -62,6 +62,9 @@ type HTTPTransport struct { // Maximum number of connections per host. Default: 0 (no limit) MaxConnsPerHost int `json:"max_conns_per_host,omitempty"` + // Maximum number of idle connections per host. Default: 0 (uses Go's default of 2) + MaxIdleConnsPerHost int `json:"max_idle_conns_per_host,omitempty"` + // How long to wait before timing out trying to connect to // an upstream. DialTimeout caddy.Duration `json:"dial_timeout,omitempty"` @@ -193,6 +196,7 @@ func (h *HTTPTransport) NewTransport(ctx caddy.Context) (*http.Transport, error) return conn, nil }, MaxConnsPerHost: h.MaxConnsPerHost, + MaxIdleConnsPerHost: h.MaxIdleConnsPerHost, ResponseHeaderTimeout: time.Duration(h.ResponseHeaderTimeout), ExpectContinueTimeout: time.Duration(h.ExpectContinueTimeout), MaxResponseHeaderBytes: h.MaxResponseHeaderSize, |