reverseproxy: Wire up some http transport options in Caddyfile (#3843)

This commit is contained in:
Francis Lavoie 2020-11-02 16:59:02 -05:00 committed by GitHub
parent 8d038ca515
commit 860cc6adfe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 63 additions and 4 deletions

View file

@ -10,6 +10,14 @@ https://example.com {
buffer_requests buffer_requests
transport http { transport http {
read_buffer 10MB
write_buffer 20MB
max_response_header 30MB
dial_timeout 3s
dial_fallback_delay 5s
response_header_timeout 8s
expect_continue_timeout 9s
versions h2c 2 versions h2c 2
compression off compression off
max_conns_per_host 5 max_conns_per_host 5
@ -68,13 +76,20 @@ https://example.com {
}, },
"transport": { "transport": {
"compression": false, "compression": false,
"dial_fallback_delay": 5000000000,
"dial_timeout": 3000000000,
"expect_continue_timeout": 9000000000,
"max_conns_per_host": 5, "max_conns_per_host": 5,
"max_idle_conns_per_host": 2, "max_idle_conns_per_host": 2,
"max_response_header_size": 30000000,
"protocol": "http", "protocol": "http",
"read_buffer_size": 10000000,
"response_header_timeout": 8000000000,
"versions": [ "versions": [
"h2c", "h2c",
"2" "2"
] ],
"write_buffer_size": 20000000
}, },
"upstreams": [ "upstreams": [
{ {

View file

@ -588,7 +588,11 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
// transport http { // transport http {
// read_buffer <size> // read_buffer <size>
// write_buffer <size> // write_buffer <size>
// max_response_header <size>
// dial_timeout <duration> // dial_timeout <duration>
// dial_fallback_delay <duration>
// response_header_timeout <duration>
// expect_continue_timeout <duration>
// tls // tls
// tls_client_auth <automate_name> | <cert_file> <key_file> // tls_client_auth <automate_name> | <cert_file> <key_file>
// tls_insecure_skip_verify // tls_insecure_skip_verify
@ -627,6 +631,16 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
} }
h.WriteBufferSize = int(size) h.WriteBufferSize = int(size)
case "max_response_header":
if !d.NextArg() {
return d.ArgErr()
}
size, err := humanize.ParseBytes(d.Val())
if err != nil {
return d.Errf("invalid max response header size '%s': %v", d.Val(), err)
}
h.MaxResponseHeaderSize = int64(size)
case "dial_timeout": case "dial_timeout":
if !d.NextArg() { if !d.NextArg() {
return d.ArgErr() return d.ArgErr()
@ -637,6 +651,36 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
} }
h.DialTimeout = caddy.Duration(dur) h.DialTimeout = caddy.Duration(dur)
case "dial_fallback_delay":
if !d.NextArg() {
return d.ArgErr()
}
dur, err := caddy.ParseDuration(d.Val())
if err != nil {
return d.Errf("bad fallback delay value '%s': %v", d.Val(), err)
}
h.FallbackDelay = caddy.Duration(dur)
case "response_header_timeout":
if !d.NextArg() {
return d.ArgErr()
}
dur, err := caddy.ParseDuration(d.Val())
if err != nil {
return d.Errf("bad timeout value '%s': %v", d.Val(), err)
}
h.ResponseHeaderTimeout = caddy.Duration(dur)
case "expect_continue_timeout":
if !d.NextArg() {
return d.ArgErr()
}
dur, err := caddy.ParseDuration(d.Val())
if err != nil {
return d.Errf("bad timeout value '%s': %v", d.Val(), err)
}
h.ExpectContinueTimeout = caddy.Duration(dur)
case "tls_client_auth": case "tls_client_auth":
if h.TLS == nil { if h.TLS == nil {
h.TLS = new(TLSConfig) h.TLS = new(TLSConfig)