This is probably our biggest patch release ever -- not that lots of things were broken, but there's lots of refinement happening thanks to broader adoption and contributions from many more people. Just look at the New Contributors below!
Anyway, this release does contain some bug fixes and dependency upgrades which we hope will serve you well. Let us know if there's any issues! And thank you to all who contributed, especially our reliable maintainer team!
What's Changed
- update quic-go to v0.51.0 by @marten-seemann in https://github.com/caddyserver/caddy/pull/6972
- forwardproxy: reference correct field name in LoadModule by @mohammed90 in https://github.com/caddyserver/caddy/pull/6978
- fix: Remove
nil
arg fromzapslog.NewHandler
call by @IndraGunawan in https://github.com/caddyserver/caddy/pull/6984 - fileserver: Add support for .avif image format by @steffenbusch in https://github.com/caddyserver/caddy/pull/6988
- reverseproxy: use DialTLSContext for TLS if servername has placeholder by @WeidiDeng in https://github.com/caddyserver/caddy/pull/6955
- admin: Make sure that any admin routers are provisioned when local/re… by @Compy in https://github.com/caddyserver/caddy/pull/6997
- log: default logger should respect
{in,ex}clude
by @mohammed90 in https://github.com/caddyserver/caddy/pull/6995 - Move local admin server replacement logic below data structure initia… by @Compy in https://github.com/caddyserver/caddy/pull/7004
- acme_server: fix policy parsing in caddyfile by @mohammed90 in https://github.com/caddyserver/caddy/pull/7006
- implement Unwrap for interceptedResponseHandler by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7016
- fileserver: map invalid path errors to fs.ErrInvalid, and return 400 … by @Compy in https://github.com/caddyserver/caddy/pull/7017
- caddyhttp: fix route sort by comparing paths without wildcard if they don't shar… by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7015
- refactor: use maps.Copy for cleaner map handling by @eveneast in https://github.com/caddyserver/caddy/pull/7009
- refactor: use slices.Contains to simplify code by @tongjicoder in https://github.com/caddyserver/caddy/pull/7039
- chore: upgrade .golangci.yml and workflow to v2 by @mohammed90 in https://github.com/caddyserver/caddy/pull/6924
- build(deps): bump golangci/golangci-lint-action from 6 to 8 by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7044
- fix: crash - null check on event origin by @suxatcode in https://github.com/caddyserver/caddy/pull/7047
- fix: prevent error handler from overriding sub handler matchers by @Hellio404 in https://github.com/caddyserver/caddy/pull/6999
- client_auth: wire up leaf verifier Caddyfile by @mohammed90 in https://github.com/caddyserver/caddy/pull/6772
- caddyfile: reject blocks in log_skip directive by @IwatsukaYura in https://github.com/caddyserver/caddy/pull/7056
- build(deps): bump github.com/cloudflare/circl from 1.6.0 to 1.6.1 by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7058
- cmd: fix
Commands
function not returning all registered commands by @hslatman in https://github.com/caddyserver/caddy/pull/7059 - ci: add dep review, OSSF scorecard actions by @mohammed90 in https://github.com/caddyserver/caddy/pull/7063
- ci: add
{base,head}-ref
to dep review check by @mohammed90 in https://github.com/caddyserver/caddy/pull/7064 - core: clean up new config if it failed to run by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7068
- chore: apply security best practices for CI by @mohammed90 in https://github.com/caddyserver/caddy/pull/7066
- refactor: use the built-in max/min to simplify the code by @xiaoxiangirl in https://github.com/caddyserver/caddy/pull/7081
- [ADD] sort buttons in grid mode by @filipRatajczak in https://github.com/caddyserver/caddy/pull/7089
- update quic-go to v0.53.0 by @marten-seemann in https://github.com/caddyserver/caddy/pull/7094
- refactor: replace HasPrefix+TrimPrefix with CutPrefix by @gopherorg in https://github.com/caddyserver/caddy/pull/7095
- docs: fix some minor issues in the comments by @mountdisk in https://github.com/caddyserver/caddy/pull/7101
- httpcaddyfile: Validates TLS DNS challenge options by @francislavoie in https://github.com/caddyserver/caddy/pull/7099
- chore: fix struct name in comment by @bytetigers in https://github.com/caddyserver/caddy/pull/7114
- reverse proxy: validate versions in http transport by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7112
- chore: fix function in comment by @bytesingsong in https://github.com/caddyserver/caddy/pull/7121
- Fix: Support placeholders in header replacement search patterns by @zongzewu23 in https://github.com/caddyserver/caddy/pull/7117
- fileserver: specify license for embedded JavaScript by @infertux in https://github.com/caddyserver/caddy/pull/7127
- fix dead link by @eeemmmmmm in https://github.com/caddyserver/caddy/pull/7136
- update quic-go to v0.54.0 by @marten-seemann in https://github.com/caddyserver/caddy/pull/7138
- chore: fix minor issue in comment by @pingshuijie in https://github.com/caddyserver/caddy/pull/7140
- refactor: use slices.Equal to simplify code by @minxinyi in https://github.com/caddyserver/caddy/pull/7141
- ci: reduce dependabot spam by @mohammed90 in https://github.com/caddyserver/caddy/pull/7078
- fix(provisioning):
Context.App
orContext.AppIfConfigured
will return(val, nil)
even if the app failed to provision or validate the first time by @alexandre-daubois in https://github.com/caddyserver/caddy/pull/7070 - build(deps): bump the actions-deps group with 6 updates by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7142
- Use KeepAliveConfig to pass keepalive_interval to listener's accepted sockets by @joshuamcbeth in https://github.com/caddyserver/caddy/pull/7151
- build(deps): bump the all-updates group across 1 directory with 17 updates by @dependabot[bot] in https://github.com/caddyserver/caddy/pull/7155
- cmd: Allow
caddy adapt
to read from stdin by @bosdhill in https://github.com/caddyserver/caddy/pull/7163 - feat: add bcrypt cost parameter to hash-password by @GreyXor in https://github.com/caddyserver/caddy/pull/7149
- fix typo in bcrypt cost flag name by @GreyXor in https://github.com/caddyserver/caddy/pull/7168
- chore: fix inconsistent function name in comment by @youzichuan in https://github.com/caddyserver/caddy/pull/7174
- caddytls: fix regression in external certificate manager support by @quagsirus in https://github.com/caddyserver/caddy/pull/7179
- http: free up quic listener when stopping by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7177
- chore: bump Go to v1.25 by @dunglas in https://github.com/caddyserver/caddy/pull/7184
- caddyhttp: refactor to use reflect.TypeFor by @cuiweixie in https://github.com/caddyserver/caddy/pull/7187
- refactor: use a more modern writing style to simplify code by @joemicky in https://github.com/caddyserver/caddy/pull/7182
- http: disable keepalive when KeepAliveInterval is negative by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7158
- http: clean up listeners if some of the listeners fail to bind by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7176
- reverse_proxy: use the new KeepAliveConfig to set probe interval by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7157
- ci: set proper build tags in golangci and minor cleanup by @dunglas in https://github.com/caddyserver/caddy/pull/7183
- doc: Add a few lines about Etag file content by @Pizmovc in https://github.com/caddyserver/caddy/pull/7173
- file_server: set Range header for precompressed static files to force Content Length header to appear by @WeidiDeng in https://github.com/caddyserver/caddy/pull/7042
- caddyhttp: use the new http.Protocols to handle h1, h2 and h2c requests by @WeidiDeng in https://github.com/caddyserver/caddy/pull/6961
Changelog
- [44d078] acme_server: fix policy parsing in caddyfile (#7006)
- [320c57] admin: Make sure that any admin routers are provisioned when local/re… (#6997)
- [49dac6] bcrypt: add cost parameter to hash-password (#7149)
- [4bfc3b] bcrypt: wrong cost flag name (#7168)
- [4b01d7] build(deps): bump github.com/cloudflare/circl from 1.6.0 to 1.6.1 (#7058)
- [45c934] build(deps): bump golangci/golangci-lint-action from 6 to 8 (#7044)
- [5bc2af] build(deps): bump the actions-deps group with 6 updates (#7142)
- [007f40] build(deps): bump the all-updates group across 1 directory with 17 updates (#7155)
- [852438] caddyhttp: Compare paths w/o wildcard if prefixes differ (#7015)
- [7590c9] caddyhttp: Free up quic listener when stopping (#7177)
- [b15ed9] caddyhttp: refactor to use reflect.TypeFor (#7187)
- [14a63a] caddyhttp: use the new http.Protocols to handle h1, h2 and h2c requests (#6961)
- [731e6c] caddytls: Improve ECH error logging (close [#7152])
- [105eee] caddytls: Set local_ip, not remote_ip (#6952)
- [b89887] caddytls: fix regression in external certificate manager support (#7179)
- [1481c0] caddytls: wire up client_auth leaf verifier Caddyfile (#6772)
- [19ff47] cmd: Allow
caddy adapt
to read from stdin (#7163) - [e633d0] cmd: fix
Commands
function not returning all registered commands (#7059) - [709989] core: Check for nil event origin (#7047)
- [3d0b4f] core: Clean up new config if it failed to run (#7068)
- [051e73] core: Replace admin server later in provisionContext (#7004)
- [fe41ff] core: Save app provisioning errors with context (#7070)
- [e4447c] core: Use KeepAliveConfig to pass keepalive_interval to listener's accepted sockets (#7151)
- [b9710c] fileserver: Add a few doc lines about Etag file content (#7173)
- [3b4d96] fileserver: Add sort buttons in grid mode (#7089)
- [54d03c] fileserver: Add support for .avif image format (#6988)
- [790f3e] fileserver: denote license for embedded JavaScript for LibreJS (#7127)
- [94147c] fileserver: map invalid path errors to fs.ErrInvalid, and return 400 for any invalid path errors. (close [#7008]) (#7017)
- [67debd] fileserver: set Range header for precompressed static files to force Content Length header to appear (#7042)
- [89ed5f] fix: Remove nil arg from zapslog.NewHandler call (#6984)
- [3723e8] go.mod: Upgrade CertMagic to v0.24.0
- [3bd413] go.mod: Upgrade dependencies
- [a6d488] go.mod: update quic-go to v0.51.0 (#6972)
- [11c6da] go.mod: update quic-go to v0.53.0 (#7094)
- [bbf1df] headers: Support placeholders in replacement search patterns (#7117)
- [f11c78] http: clean up listeners if some of the listeners fail to bind (#7176)
- [fdf610] http: disable keepalive when KeepAliveInterval is negative (#7158)
- [5b727b] httpcaddyfile: Allow naked acme_dns if dns is set (fix [#7091])
- [0badb0] httpcaddyfile: Fix generated config related to ACME global options
- [092913] httpcaddyfile: Prevent error handler from overriding sub-handler matchers (#6999)
- [77dd12] httpcaddyfile: Validates TLS DNS challenge options (#7099)
- [0f209f] httpcaddyfile: reject blocks in log_skip directive (#7056)
- [716d72] intercept: implement Unwrap for interceptedResponseHandler (#7016)
- [9f7148] log: default logger should respect
{in,ex}clude
(#6995) - [33c88b] refactor: replace HasPrefix+TrimPrefix with CutPrefix (#7095)
- [ab3b2d] refactor: use slices.Equal to simplify code (#7141)
- [1c596e] reverse_proxy: use the new KeepAliveConfig to set probe interval (#7157)
- [aa3d20] reverseproxy: Use DialTLSContext if ServerName has placeholder (#6955)
- [737936] reverseproxy: reference correct field name in LoadModule (#6978)
- [1209b5] reverseproxy: validate versions in http transport (#7112)
New Contributors
- @IndraGunawan made their first contribution in https://github.com/caddyserver/caddy/pull/6984
- @Compy made their first contribution in https://github.com/caddyserver/caddy/pull/6997
- @eveneast made their first contribution in https://github.com/caddyserver/caddy/pull/7009
- @tongjicoder made their first contribution in https://github.com/caddyserver/caddy/pull/7039
- @suxatcode made their first contribution in https://github.com/caddyserver/caddy/pull/7047
- @Hellio404 made their first contribution in https://github.com/caddyserver/caddy/pull/6999
- @IwatsukaYura made their first contribution in https://github.com/caddyserver/caddy/pull/7056
- @xiaoxiangirl made their first contribution in https://github.com/caddyserver/caddy/pull/7081
- @filipRatajczak made their first contribution in https://github.com/caddyserver/caddy/pull/7089
- @gopherorg made their first contribution in https://github.com/caddyserver/caddy/pull/7095
- @mountdisk made their first contribution in https://github.com/caddyserver/caddy/pull/7101
- @bytetigers made their first contribution in https://github.com/caddyserver/caddy/pull/7114
- @bytesingsong made their first contribution in https://github.com/caddyserver/caddy/pull/7121
- @zongzewu23 made their first contribution in https://github.com/caddyserver/caddy/pull/7117
- @infertux made their first contribution in https://github.com/caddyserver/caddy/pull/7127
- @eeemmmmmm made their first contribution in https://github.com/caddyserver/caddy/pull/7136
- @pingshuijie made their first contribution in https://github.com/caddyserver/caddy/pull/7140
- @minxinyi made their first contribution in https://github.com/caddyserver/caddy/pull/7141
- @alexandre-daubois made their first contribution in https://github.com/caddyserver/caddy/pull/7070
- @joshuamcbeth made their first contribution in https://github.com/caddyserver/caddy/pull/7151
- @bosdhill made their first contribution in https://github.com/caddyserver/caddy/pull/7163
- @GreyXor made their first contribution in https://github.com/caddyserver/caddy/pull/7149
- @youzichuan made their first contribution in https://github.com/caddyserver/caddy/pull/7174
- @quagsirus made their first contribution in https://github.com/caddyserver/caddy/pull/7179
- @cuiweixie made their first contribution in https://github.com/caddyserver/caddy/pull/7187
- @joemicky made their first contribution in https://github.com/caddyserver/caddy/pull/7182
- @Pizmovc made their first contribution in https://github.com/caddyserver/caddy/pull/7173
Full Changelog: https://github.com/caddyserver/caddy/compare/v2.10.0...v2.10.1