diff --git a/modules/caddyhttp/reverseproxy/hosts.go b/modules/caddyhttp/reverseproxy/hosts.go index a7709eeefbc..87139c36286 100644 --- a/modules/caddyhttp/reverseproxy/hosts.go +++ b/modules/caddyhttp/reverseproxy/hosts.go @@ -96,6 +96,13 @@ type Upstream struct { cb CircuitBreaker } +func (u Upstream) String() string { + if u.LookupSRV != "" { + return u.LookupSRV + } + return u.Dial +} + // Available returns true if the remote host // is available to receive requests. This is // the method that should be used by selection diff --git a/modules/caddyhttp/reverseproxy/reverseproxy.go b/modules/caddyhttp/reverseproxy/reverseproxy.go index 918f7a6276c..4ac50ace995 100644 --- a/modules/caddyhttp/reverseproxy/reverseproxy.go +++ b/modules/caddyhttp/reverseproxy/reverseproxy.go @@ -172,7 +172,7 @@ func (h *Handler) Provision(ctx caddy.Context) error { for _, upstream := range h.Upstreams { // create or get the host representation for this upstream var host Host = new(upstreamHost) - existingHost, loaded := hosts.LoadOrStore(upstream.Dial, host) + existingHost, loaded := hosts.LoadOrStore(upstream.String(), host) if loaded { host = existingHost.(Host) } @@ -252,7 +252,7 @@ func (h *Handler) Cleanup() error { // remove hosts from our config from the pool for _, upstream := range h.Upstreams { - hosts.Delete(upstream.Dial) + hosts.Delete(upstream.String()) } return nil @@ -446,6 +446,7 @@ func (h *Handler) reverseProxy(rw http.ResponseWriter, req *http.Request, di Dia } h.logger.Debug("upstream roundtrip", + zap.String("upstream", di.Upstream.String()), zap.Object("request", caddyhttp.LoggableHTTPRequest{Request: req}), zap.Object("headers", caddyhttp.LoggableHTTPHeader(res.Header)), zap.Duration("duration", duration),