diff --git a/caddytest/integration/caddyfile_adapt/reverse_proxy_webtransport.caddyfiletest b/caddytest/integration/caddyfile_adapt/reverse_proxy_webtransport.caddyfiletest new file mode 100644 index 000000000..c55eb1945 --- /dev/null +++ b/caddytest/integration/caddyfile_adapt/reverse_proxy_webtransport.caddyfiletest @@ -0,0 +1,47 @@ +:8443 + +reverse_proxy https://backend:9443 { + transport http { + versions 3 + webtransport + tls_insecure_skip_verify + } +} +---------- +{ + "apps": { + "http": { + "servers": { + "srv0": { + "listen": [ + ":8443" + ], + "routes": [ + { + "handle": [ + { + "handler": "reverse_proxy", + "transport": { + "protocol": "http", + "tls": { + "insecure_skip_verify": true + }, + "versions": [ + "3" + ], + "webtransport": true + }, + "upstreams": [ + { + "dial": "backend:9443" + } + ] + } + ] + } + ] + } + } + } + } +} diff --git a/modules/caddyhttp/reverseproxy/caddyfile.go b/modules/caddyhttp/reverseproxy/caddyfile.go index 8716babe3..92ba48399 100644 --- a/modules/caddyhttp/reverseproxy/caddyfile.go +++ b/modules/caddyhttp/reverseproxy/caddyfile.go @@ -1315,6 +1315,15 @@ func (h *HTTPTransport) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { return d.ArgErr() } + case "webtransport": + // Accepts no arguments: `webtransport` alone enables it. + // Exclusivity with `versions 3` is enforced at Provision + // time so parsing is order-independent. + if d.NextArg() { + return d.Errf("webtransport does not take arguments") + } + h.WebTransport = true + case "compression": if d.NextArg() { if d.Val() == "off" {