summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYe Zhihao <vigilans@foxmail.com>2020-08-01 01:30:20 +0800
committerGitHub <noreply@github.com>2020-07-31 11:30:20 -0600
commit6f73a358f43013a43c55d57f0c7726a6277f62b6 (patch)
treea96ce10ac6e2adbb3ec48780819e5d2f0349a54f
parent6a14e2c2a8881d5e90f1ee363ec4662a3f87402b (diff)
httpcaddyfile: Add `compression` to http transport config (#3624)
* httpcaddyfile: Add `compression` to http transport config * Add caddyfile adapt test for typical h2c setup
-rw-r--r--caddytest/integration/caddyfile_adapt/reverse_proxy_h2c.txt96
-rw-r--r--modules/caddyhttp/reverseproxy/caddyfile.go8
2 files changed, 104 insertions, 0 deletions
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())
}