reverseproxy: Set origreq in active health check (#5284)

* reverseproxy: Set origreq in active health check

Fix #5281

* Oops; dereference Request
This commit is contained in:
Matt Holt 2023-01-06 13:06:38 -07:00 committed by GitHub
parent 55035d327a
commit d74f6fd967
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -266,7 +266,8 @@ func (h *Handler) doActiveHealthCheck(dialInfo DialInfo, hostAddr string, upstre
u.Host = net.JoinHostPort(host, portStr) u.Host = net.JoinHostPort(host, portStr)
} }
// attach dialing information to this request // attach dialing information to this request, as well as context values that
// may be expected by handlers of this request
ctx := h.ctx.Context ctx := h.ctx.Context
ctx = context.WithValue(ctx, caddy.ReplacerCtxKey, caddy.NewReplacer()) ctx = context.WithValue(ctx, caddy.ReplacerCtxKey, caddy.NewReplacer())
ctx = context.WithValue(ctx, caddyhttp.VarsCtxKey, map[string]any{ ctx = context.WithValue(ctx, caddyhttp.VarsCtxKey, map[string]any{
@ -276,6 +277,8 @@ func (h *Handler) doActiveHealthCheck(dialInfo DialInfo, hostAddr string, upstre
if err != nil { if err != nil {
return fmt.Errorf("making request: %v", err) return fmt.Errorf("making request: %v", err)
} }
ctx = context.WithValue(ctx, caddyhttp.OriginalRequestCtxKey, *req)
req = req.WithContext(ctx)
for key, hdrs := range h.HealthChecks.Active.Headers { for key, hdrs := range h.HealthChecks.Active.Headers {
if strings.ToLower(key) == "host" { if strings.ToLower(key) == "host" {
req.Host = h.HealthChecks.Active.Headers.Get(key) req.Host = h.HealthChecks.Active.Headers.Get(key)