summaryrefslogtreecommitdiff
path: root/modules/caddyhttp
diff options
context:
space:
mode:
authorMatthew Holt <mholt@users.noreply.github.com>2020-02-27 10:20:13 -0700
committerMatthew Holt <mholt@users.noreply.github.com>2020-02-27 10:20:13 -0700
commit86b785e51cccd5df18611c380962cbd4faf38af5 (patch)
treebce04440795b9e0131d026b3a01787155f2a1459 /modules/caddyhttp
parentf6ae0925075f3b1794a699f3ac47845000f7967b (diff)
reverse_proxy: Add 'transparent' Caddyfile subdirective (closes #2873)
Diffstat (limited to 'modules/caddyhttp')
-rw-r--r--modules/caddyhttp/reverseproxy/caddyfile.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/modules/caddyhttp/reverseproxy/caddyfile.go b/modules/caddyhttp/reverseproxy/caddyfile.go
index d08e7f1..a2b1898 100644
--- a/modules/caddyhttp/reverseproxy/caddyfile.go
+++ b/modules/caddyhttp/reverseproxy/caddyfile.go
@@ -411,6 +411,21 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
}
h.TransportRaw = caddyconfig.JSONModuleObject(rt, "protocol", name, nil)
+ case "transparent":
+ if d.NextArg() {
+ return d.ArgErr()
+ }
+ if h.Headers == nil {
+ h.Headers = new(headers.Handler)
+ }
+ if h.Headers.Request == nil {
+ h.Headers.Request = new(headers.HeaderOps)
+ }
+ // The X-Forwarded-For header is always appended to by default, directly in the reverse proxy code
+ headers.CaddyfileHeaderOp(h.Headers.Request, "Host", "{http.request.hostport}", "")
+ headers.CaddyfileHeaderOp(h.Headers.Request, "X-Real-Ip", "{http.request.remote}", "")
+ headers.CaddyfileHeaderOp(h.Headers.Request, "X-Forwarded-Proto", "{http.request.scheme}", "")
+
default:
return d.Errf("unrecognized subdirective %s", d.Val())
}