From c1e5c09294abdb01bb404aafced7c9092b202070 Mon Sep 17 00:00:00 2001 From: Francis Lavoie Date: Tue, 26 May 2020 16:13:15 -0400 Subject: [PATCH] reverseproxy: Improve error message when using scheme+placeholder (#3393) * reverseproxy: Improve error message when using scheme+placeholder * reverseproxy: Simplify error message Co-authored-by: Matt Holt Co-authored-by: Matt Holt --- modules/caddyhttp/reverseproxy/caddyfile.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/caddyhttp/reverseproxy/caddyfile.go b/modules/caddyhttp/reverseproxy/caddyfile.go index 491b0674..47896a7d 100644 --- a/modules/caddyhttp/reverseproxy/caddyfile.go +++ b/modules/caddyhttp/reverseproxy/caddyfile.go @@ -103,6 +103,13 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { var network, scheme, host, port string if strings.Contains(upstreamAddr, "://") { + // we get a parsing error if a placeholder is specified + // so we return a more user-friendly error message instead + // to explain what to do instead + if strings.Contains(upstreamAddr, "{") { + return "", d.Err("due to parsing difficulties, placeholders are not allowed when an upstream address contains a scheme") + } + toURL, err := url.Parse(upstreamAddr) if err != nil { return "", d.Errf("parsing upstream URL: %v", err)