mirror of
https://github.com/caddyserver/caddy.git
synced 2025-05-22 01:29:59 +08:00
reverseproxy: Replace health header placeholders (#5861)
This commit is contained in:
@ -372,7 +372,7 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
||||
if len(values) == 0 {
|
||||
values = append(values, "")
|
||||
}
|
||||
healthHeaders[key] = values
|
||||
healthHeaders[key] = append(healthHeaders[key], values...)
|
||||
}
|
||||
if h.HealthChecks == nil {
|
||||
h.HealthChecks = new(HealthChecks)
|
||||
|
@ -358,11 +358,17 @@ func (h *Handler) doActiveHealthCheck(dialInfo DialInfo, hostAddr string, upstre
|
||||
}
|
||||
ctx = context.WithValue(ctx, caddyhttp.OriginalRequestCtxKey, *req)
|
||||
req = req.WithContext(ctx)
|
||||
for key, hdrs := range h.HealthChecks.Active.Headers {
|
||||
|
||||
// set headers, using a replacer with only globals (env vars, system info, etc.)
|
||||
repl := caddy.NewReplacer()
|
||||
for key, vals := range h.HealthChecks.Active.Headers {
|
||||
key = repl.ReplaceAll(key, "")
|
||||
if key == "Host" {
|
||||
req.Host = h.HealthChecks.Active.Headers.Get(key)
|
||||
} else {
|
||||
req.Header[key] = hdrs
|
||||
req.Host = repl.ReplaceAll(h.HealthChecks.Active.Headers.Get(key), "")
|
||||
continue
|
||||
}
|
||||
for _, val := range vals {
|
||||
req.Header.Add(key, repl.ReplaceKnown(val, ""))
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user