summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/reverseproxy
diff options
context:
space:
mode:
authorFrancis Lavoie <lavofr@gmail.com>2020-10-30 14:05:21 -0400
committerGitHub <noreply@github.com>2020-10-30 12:05:21 -0600
commitb66099379d065ec3340cbe147f65dcf0a39e8e52 (patch)
treef1625b31777c34c7be5afb743a412db1c0dc5381 /modules/caddyhttp/reverseproxy
parentc9fdff9976da38c650a51cd3fb4f2667853ff627 (diff)
reverseproxy: Add max_idle_conns_per_host; fix godocs (#3829)
Diffstat (limited to 'modules/caddyhttp/reverseproxy')
-rw-r--r--modules/caddyhttp/reverseproxy/caddyfile.go28
-rw-r--r--modules/caddyhttp/reverseproxy/httptransport.go4
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,