diff options
author | Jesper Brix Rosenkilde <[email protected]> | 2024-07-12 23:01:58 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-07-12 17:01:58 -0400 |
commit | 07c863637dff831c99d91cce129899ac8aa7b25c (patch) | |
tree | cb2a283bf37514879a2fd5c9fd3fc02dbe846312 | |
parent | dc2a5d5c52b3baeac182311fe7473870e671126a (diff) | |
download | caddy-07c863637dff831c99d91cce129899ac8aa7b25c.tar.gz caddy-07c863637dff831c99d91cce129899ac8aa7b25c.zip |
reverseproxy: Caddyfile support for health_method (#6454)
* Add Caddyfile support of setting active health check request method
* Add integration test for active health check request method
-rw-r--r-- | caddytest/integration/caddyfile_adapt/reverse_proxy_health_method.caddyfiletest | 40 | ||||
-rw-r--r-- | modules/caddyhttp/reverseproxy/caddyfile.go | 13 |
2 files changed, 53 insertions, 0 deletions
diff --git a/caddytest/integration/caddyfile_adapt/reverse_proxy_health_method.caddyfiletest b/caddytest/integration/caddyfile_adapt/reverse_proxy_health_method.caddyfiletest new file mode 100644 index 000000000..920702c10 --- /dev/null +++ b/caddytest/integration/caddyfile_adapt/reverse_proxy_health_method.caddyfiletest @@ -0,0 +1,40 @@ +:8884 + +reverse_proxy 127.0.0.1:65535 { + health_uri /health + health_method HEAD +} +---------- +{ + "apps": { + "http": { + "servers": { + "srv0": { + "listen": [ + ":8884" + ], + "routes": [ + { + "handle": [ + { + "handler": "reverse_proxy", + "health_checks": { + "active": { + "method": "HEAD", + "uri": "/health" + } + }, + "upstreams": [ + { + "dial": "127.0.0.1:65535" + } + ] + } + ] + } + ] + } + } + } + } +} diff --git a/modules/caddyhttp/reverseproxy/caddyfile.go b/modules/caddyhttp/reverseproxy/caddyfile.go index 9de7aedd9..ab180b3d8 100644 --- a/modules/caddyhttp/reverseproxy/caddyfile.go +++ b/modules/caddyhttp/reverseproxy/caddyfile.go @@ -79,6 +79,7 @@ func parseCaddyfile(h httpcaddyfile.Helper) (caddyhttp.MiddlewareHandler, error) // health_headers { // <field> [<values...>] // } +// health_method <value> // // # passive health checking // fail_duration <duration> @@ -387,6 +388,18 @@ func (h *Handler) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { } h.HealthChecks.Active.Headers = healthHeaders + case "health_method": + if !d.NextArg() { + return d.ArgErr() + } + if h.HealthChecks == nil { + h.HealthChecks = new(HealthChecks) + } + if h.HealthChecks.Active == nil { + h.HealthChecks.Active = new(ActiveHealthChecks) + } + h.HealthChecks.Active.Method = d.Val() + case "health_interval": if !d.NextArg() { return d.ArgErr() |