caddy-0.9.9
Bug Fixes
- Route upsert no longer fails with duplicate
@iderror —PUT /id/<id>momentarily indexes both the old and new route entries before removing the old one, causing Caddy to reject the update withduplicate ID found at routes/1 and routes/2. Fixed by switching to DELETE + POST, which removes the existing route atomically before re-adding the updated one. X-Real-IP/X-Forwarded-Forheaders now carry the real client IP — the{client_ip}Caddyfile shorthand is not a raw JSON placeholder;{http.vars.client_ip}is the correct form in the admin-API JSON config. ChangedinjectRealIPto use{http.vars.client_ip}so the headers expand to the trusted-proxy-aware client IP instead of the literal string{client_ip}.
Helm chart: 0.9.9
- Placeholder
:80/:443blocks now carry arespond /healthz 200route — empty server blocks leave theroutesfield asnullin Caddy's JSON config. Whenk8s_ingresstries to POST a new route to a null array, Caddy returnscannot unmarshal object into RouteList. The placeholder routes initialise the array so dynamic route injection works on a fresh pod.
Full diff: caddy-0.9.8...caddy-0.9.9