From 6f73a358f43013a43c55d57f0c7726a6277f62b6 Mon Sep 17 00:00:00 2001 From: Ye Zhihao Date: Sat, 1 Aug 2020 01:30:20 +0800 Subject: httpcaddyfile: Add `compression` to http transport config (#3624) * httpcaddyfile: Add `compression` to http transport config * Add caddyfile adapt test for typical h2c setup --- .../caddyfile_adapt/reverse_proxy_h2c.txt | 96 ++++++++++++++++++++++ modules/caddyhttp/reverseproxy/caddyfile.go | 8 ++ 2 files changed, 104 insertions(+) create mode 100644 caddytest/integration/caddyfile_adapt/reverse_proxy_h2c.txt diff --git a/caddytest/integration/caddyfile_adapt/reverse_proxy_h2c.txt b/caddytest/integration/caddyfile_adapt/reverse_proxy_h2c.txt new file mode 100644 index 0000000..7c4ba29 --- /dev/null +++ b/caddytest/integration/caddyfile_adapt/reverse_proxy_h2c.txt @@ -0,0 +1,96 @@ + +https://example.com { + reverse_proxy /path http://localhost:54321 { + header_up Host {host} + header_up X-Real-IP {remote} + header_up X-Forwarded-For {remote} + header_up X-Forwarded-Port {server_port} + header_up X-Forwarded-Proto "http" + transport http { + versions h2c 2 + compression off + } + } +} + +---------- +{ + "apps": { + "http": { + "servers": { + "srv0": { + "listen": [ + ":443" + ], + "routes": [ + { + "match": [ + { + "host": [ + "example.com" + ] + } + ], + "handle": [ + { + "handler": "subroute", + "routes": [ + { + "handle": [ + { + "handler": "reverse_proxy", + "headers": { + "request": { + "set": { + "Host": [ + "{http.request.host}" + ], + "X-Forwarded-For": [ + "{http.request.remote}" + ], + "X-Forwarded-Port": [ + "{server_port}" + ], + "X-Forwarded-Proto": [ + "http" + ], + "X-Real-Ip": [ + "{http.request.remote}" + ] + } + } + }, + "transport": { + "compression": false, + "protocol": "http", + "versions": [ + "h2c", + "2" + ] + }, + "upstreams": [ + { + "dial": "localhost:54321" + } + ] + } + ], + "match": [ + { + "path": [ + "/path" + ] + } + ] + } + ] + } + ], + "terminal": true + } + ] + } + } + } + } +} diff --git a/modules/caddyhttp/reverseproxy/caddyfile.go b/modules/caddyhttp/reverseproxy/caddyfile.go index 1d00cbf..8c3b118 100644 --- a/modules/caddyhttp/reverseproxy/caddyfile.go +++ b/modules/caddyhttp/reverseproxy/caddyfile.go @@ -719,6 +719,14 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { return d.ArgErr() } + case "compression": + if d.NextArg() { + if d.Val() == "off" { + var disable bool + h.Compression = &disable + } + } + default: return d.Errf("unrecognized subdirective %s", d.Val()) } -- cgit v1.2.3