This release improves several aspects of Caddy with minor features, bug fixes, and security patches. Thank you to everyone and their bots who contributed to help make this release the best one yet!
Security patches:
- fastcgi: Carrying over a patch from FrankenPHP for a bug that could allow non-PHP files to be executed; collaborated on by @dunglas, @KC1zs4, and @chenjj.
- vars: A more thorough fix for https://github.com/advisories/GHSA-m2w3-8f23-hxxf, collaborated by @everping and @vnxme.
- admin: Array index normalization to prevent remote admin socket auth bypass, by @Amemoyoi and bot.
- admin: More rigorous path prefix matching to prevent remote admin socket auth bypass, by @Amemoyoi and bot.
We've also merged a couple PRs that fix upstream security bugs in other projects like quic-go and CertMagic. Thank you to @marten-seemann for maintaining quic-go so diligently!
What's Changed
- caddyhttp: Sync placeholder expansion in
varsandvars_regexpby @vnxme in https://github.com/caddyserver/caddy/pull/7573 - caddytls: Avoid ACME fallback for implicit Tailscale *.ts.net policies by @steadytao in https://github.com/caddyserver/caddy/pull/7577
- chore: Resolve recent CI failures by @mholt in https://github.com/caddyserver/caddy/pull/7593
- caddytls: Consolidate empty APs more smartly by @mholt in https://github.com/caddyserver/caddy/pull/7567
- rewrite: skip query rename when source key is absent by @steadytao in https://github.com/caddyserver/caddy/pull/7599
- root: introduce down-propagating Helper.BlockState for other directives/plugins to use by @henderkes in https://github.com/caddyserver/caddy/pull/7594
- http: make zstd checksum configurable by @ottenhoff in https://github.com/caddyserver/caddy/pull/7586
- notify: Always send "READY=1" even after an error by @francislavoie in https://github.com/caddyserver/caddy/pull/7597
- reverseproxy: Fix check for
header_up Host {upstream_hostport}redundancy by @yubiuser in https://github.com/caddyserver/caddy/pull/7564 - caddytls: Expand placeholders in dns_challenge override_domain tls parameter by @pberkel in https://github.com/caddyserver/caddy/pull/7609
- tls: add system and combined CA pool modules by @HarshPatel5940 in https://github.com/caddyserver/caddy/pull/7406
- vars: Don't expand placeholders in values by @vnxme in https://github.com/caddyserver/caddy/pull/7629
- build(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp from 1.42.0 to 1.43.0 by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7637
- build(deps): bump the all-updates group across 1 directory with 11 updates by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7641
- reverseproxy: make stream copy buffer size configurable by @steadytao in https://github.com/caddyserver/caddy/pull/7627
- vars: Add matcher placeholder handling tests by @steadytao in https://github.com/caddyserver/caddy/pull/7640
- build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.3 to 4.1.4 by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7621
- logging: Add journald encoder wrapper by @steadytao in https://github.com/caddyserver/caddy/pull/7623
- caddyfile: Improve import/global options UX for imports before global options by @steadytao in https://github.com/caddyserver/caddy/pull/7642
- chore: replace
interface{}withanyfor modernization by @tsinglua in https://github.com/caddyserver/caddy/pull/7571 - chore: bump timberjack to v1.4.1 by @DeRuina in https://github.com/caddyserver/caddy/pull/7618
- logging: Preserve ts for journald-wrapped JSON logs by @steadytao in https://github.com/caddyserver/caddy/pull/7644
- fileserver: show symlink targets verbatim (#7476) by @maxtruxa in https://github.com/caddyserver/caddy/pull/7579
- fix(caddyfile): {block} in snippet by @prettysunflower in https://github.com/caddyserver/caddy/pull/7558
- caddyhttp: Document missing placeholders for escaped URI and prefixed query by @steffenbusch in https://github.com/caddyserver/caddy/pull/7659
- chore: add
AGENTS.mdby @mohammed90 in https://github.com/caddyserver/caddy/pull/7652 - build(deps): bump github.com/jackc/pgx/v5 from 5.8.0 to 5.9.0 by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7655
- admin: Redact sensitive request headers in API logs by @steadytao in https://github.com/caddyserver/caddy/pull/7578
- reverseproxy: add
lb_retry_matchcondition on response status by @seroperson in https://github.com/caddyserver/caddy/pull/7569 - caddyhttp: prefer port 443 in auto-HTTPS and add tests by @mholt in https://github.com/caddyserver/caddy/pull/7666
- fix: Propagate ECH keys to the QUIC listener by @steadytao in https://github.com/caddyserver/caddy/pull/7670
- chore: Use atomics where appropriate by @francislavoie in https://github.com/caddyserver/caddy/pull/7648
- metrics: Implement pushing via OLTP by @dunglas in https://github.com/caddyserver/caddy/pull/7664
- logging: Add regression coverage for rotated file mode by @steadytao in https://github.com/caddyserver/caddy/pull/7620
- httpcaddyfile: Inherit global ACME issuer settings in tls shortcuts by @steadytao in https://github.com/caddyserver/caddy/pull/7617
- build(deps): bump github.com/jackc/pgx/v5 from 5.9.0 to 5.9.2 by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7668
- admin: require path segment boundary in remote access control by @Amemoyoi in https://github.com/caddyserver/caddy/pull/7673
- reverseproxy: Add ability to clear dynamic upstreams cache during retries by @mholt in https://github.com/caddyserver/caddy/pull/7662
- listeners: clean up stale Unix socket files on Windows by @mfrischknecht in https://github.com/caddyserver/caddy/pull/7676
- admin: reject non-canonical config array indices by @Amemoyoi in https://github.com/caddyserver/caddy/pull/7592
- caddytls: Expand ACME credentials by @tribut in https://github.com/caddyserver/caddy/pull/7554
- caddyauth: set user placeholders before auth rejection by @cyphercodes in https://github.com/caddyserver/caddy/pull/7685
- caddyauth: revert user placeholders on auth rejection by @steadytao in https://github.com/caddyserver/caddy/pull/7688
- chore: Fix golangci-lint 2.12.1 findings by @steadytao in https://github.com/caddyserver/caddy/pull/7690
- httpcaddyfile: accept duration strings for log sampling interval by @tomholford in https://github.com/caddyserver/caddy/pull/7694
- tls: Add alpn to managed HTTPS records by @steadytao in https://github.com/caddyserver/caddy/pull/7653
- caddytls: avoid duplicate automation for wildcard-covered hosts by @Rijul-A in https://github.com/caddyserver/caddy/pull/7697
- docs: add documentation for fileExists and fileStat template functions by @steffenbusch in https://github.com/caddyserver/caddy/pull/7700
- rewrite: escape file matcher paths before rewriting by @cyphercodes in https://github.com/caddyserver/caddy/pull/7683
- metrics: Add nil check for metricsHandler in AdminMetrics.serveHTTP by @Br1an67 in https://github.com/caddyserver/caddy/pull/7553
New Contributors
- @steadytao made their first contribution in https://github.com/caddyserver/caddy/pull/7577
- @henderkes made their first contribution in https://github.com/caddyserver/caddy/pull/7594
- @yubiuser made their first contribution in https://github.com/caddyserver/caddy/pull/7564
- @pberkel made their first contribution in https://github.com/caddyserver/caddy/pull/7609
- @HarshPatel5940 made their first contribution in https://github.com/caddyserver/caddy/pull/7406
- @tsinglua made their first contribution in https://github.com/caddyserver/caddy/pull/7571
- @maxtruxa made their first contribution in https://github.com/caddyserver/caddy/pull/7579
- @seroperson made their first contribution in https://github.com/caddyserver/caddy/pull/7569
- @Amemoyoi made their first contribution in https://github.com/caddyserver/caddy/pull/7673
- @mfrischknecht made their first contribution in https://github.com/caddyserver/caddy/pull/7676
- @tribut made their first contribution in https://github.com/caddyserver/caddy/pull/7554
- @cyphercodes made their first contribution in https://github.com/caddyserver/caddy/pull/7685
- @tomholford made their first contribution in https://github.com/caddyserver/caddy/pull/7694
- @Rijul-A made their first contribution in https://github.com/caddyserver/caddy/pull/7697
- @Br1an67 made their first contribution in https://github.com/caddyserver/caddy/pull/7553
Full Changelog: https://github.com/caddyserver/caddy/compare/v2.11.2...v2.11.3