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)