@marcel91200 / caddy Mirror · read-only / commits / 860cc6ad
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 14, 05:15 UTC

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

Francis Lavoie committed Nov 2, 2020 at 16:59 UTC 860cc6adfe6a5022baf5fd387e0d10c5e3a174fe
2 files changed +63 -4
caddytest/integration/caddyfile_adapt/reverse_proxy_options.txt
+16 -1
@@ -10,6 +10,14 @@ https://example.com {
10 buffer_requests
11
12 transport http {
13 + read_buffer 10MB
14 + write_buffer 20MB
15 + max_response_header 30MB
16 + dial_timeout 3s
17 + dial_fallback_delay 5s
18 + response_header_timeout 8s
19 + expect_continue_timeout 9s
20 +
21 versions h2c 2
22 compression off
23 max_conns_per_host 5
@@ -68,13 +76,20 @@ https://example.com {
76 },
77 "transport": {
78 "compression": false,
79 + "dial_fallback_delay": 5000000000,
80 + "dial_timeout": 3000000000,
81 + "expect_continue_timeout": 9000000000,
82 "max_conns_per_host": 5,
83 "max_idle_conns_per_host": 2,
84 + "max_response_header_size": 30000000,
85 "protocol": "http",
86 + "read_buffer_size": 10000000,
87 + "response_header_timeout": 8000000000,
88 "versions": [
89 "h2c",
90 "2"
77 - ]
91 + ],
92 + "write_buffer_size": 20000000
93 },
94 "upstreams": [
95 {
modules/caddyhttp/reverseproxy/caddyfile.go
+47 -3
@@ -586,9 +586,13 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
586 // UnmarshalCaddyfile deserializes Caddyfile tokens into h.
587 //
588 // transport http {
589 -// read_buffer <size>
590 -// write_buffer <size>
591 -// dial_timeout <duration>
589 +// read_buffer <size>
590 +// write_buffer <size>
591 +// max_response_header <size>
592 +// dial_timeout <duration>
593 +// dial_fallback_delay <duration>
594 +// response_header_timeout <duration>
595 +// expect_continue_timeout <duration>
596 // tls
597 // tls_client_auth <automate_name> | <cert_file> <key_file>
598 // tls_insecure_skip_verify
@@ -627,6 +631,16 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
631 }
632 h.WriteBufferSize = int(size)
633
634 + case "max_response_header":
635 + if !d.NextArg() {
636 + return d.ArgErr()
637 + }
638 + size, err := humanize.ParseBytes(d.Val())
639 + if err != nil {
640 + return d.Errf("invalid max response header size '%s': %v", d.Val(), err)
641 + }
642 + h.MaxResponseHeaderSize = int64(size)
643 +
644 case "dial_timeout":
645 if !d.NextArg() {
646 return d.ArgErr()
@@ -637,6 +651,36 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
651 }
652 h.DialTimeout = caddy.Duration(dur)
653
654 + case "dial_fallback_delay":
655 + if !d.NextArg() {
656 + return d.ArgErr()
657 + }
658 + dur, err := caddy.ParseDuration(d.Val())
659 + if err != nil {
660 + return d.Errf("bad fallback delay value '%s': %v", d.Val(), err)
661 + }
662 + h.FallbackDelay = caddy.Duration(dur)
663 +
664 + case "response_header_timeout":
665 + if !d.NextArg() {
666 + return d.ArgErr()
667 + }
668 + dur, err := caddy.ParseDuration(d.Val())
669 + if err != nil {
670 + return d.Errf("bad timeout value '%s': %v", d.Val(), err)
671 + }
672 + h.ResponseHeaderTimeout = caddy.Duration(dur)
673 +
674 + case "expect_continue_timeout":
675 + if !d.NextArg() {
676 + return d.ArgErr()
677 + }
678 + dur, err := caddy.ParseDuration(d.Val())
679 + if err != nil {
680 + return d.Errf("bad timeout value '%s': %v", d.Val(), err)
681 + }
682 + h.ExpectContinueTimeout = caddy.Duration(dur)
683 +
684 case "tls_client_auth":
685 if h.TLS == nil {
686 h.TLS = new(TLSConfig)