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!
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 from zapslog.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 or Context.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
44d078b6705c7abcabb2a60f501568ff7f5a57a1 acme_server: fix policy parsing in caddyfile (#7006)
320c57291dbe06e00e0759bdb5cbbf0d622e5968 admin: Make sure that any admin routers are provisioned when local/re… (#6997)
49dac61b078a704b3e98566134c108d6def19450 bcrypt: add cost parameter to hash-password (#7149)
4bfc3b95b5f88a1042a5103d8ad3fac3f42bf129 bcrypt: wrong cost flag name (#7168)
4b01d77b81a9ebda046637026cf57671a3cc5859 build(deps): bump github.com/cloudflare/circl from 1.6.0 to 1.6.1 (#7058)
45c9341deb9818638ab389b98e7b4c74dc9f6afc build(deps): bump golangci/golangci-lint-action from 6 to 8 (#7044)
5bc2afbbb6ee5bc1537b521fd507506fd86ae43f build(deps): bump the actions-deps group with 6 updates (#7142)
007f4066f6abf55f42195155117c53b230490a73 build(deps): bump the all-updates group across 1 directory with 17 updates (#7155)
8524386737e7dcaf6ab2378e5bc9456f82b91cd1 caddyhttp: Compare paths w/o wildcard if prefixes differ (#7015)
7590c9ca1ba6096408574a7dd3b9dc42d12cb948 caddyhttp: Free up quic listener when stopping (#7177)
b15ed9b0844dd7b73977f4c6dacfb3348579ce4a caddyhttp: refactor to use reflect.TypeFor (#7187)
14a63a26b9a673857fc37cba37aedc35a10ce634 caddyhttp: use the new http.Protocols to handle h1, h2 and h2c requests (#6961)
105eee671c384459de666889be953857a7175afa caddytls: Set local_ip, not remote_ip (#6952)
b898873b90b5cb804400888ec2f2994f6a2dd270 caddytls: fix regression in external certificate manager support (#7179)
1481c0411aa3ce3a53c206e18ee9ce4223cc156d caddytls: wire up client_auth leaf verifier Caddyfile (#6772)
19ff47a63b9ff2ae424790b02548d9ba4afc56ba cmd: Allow caddy adapt to read from stdin (#7163)
e633d013f64d057f462786ccf4a430cd27817d4d cmd: fix Commands function not returning all registered commands (#7059)
7099892958fbee17f5e087c768f4db1940303fa8 core: Check for nil event origin (#7047)
3d0b4fac5a583d615fe411a4af9a24a7bcc3bee3 core: Clean up new config if it failed to run (#7068)
051e73aefca4cc3d930e8b637d848deb5e100126 core: Replace admin server later in provisionContext (#7004)
fe41ff3c5bbee0aaa44110c110fd6b4fbf052048 core: Save app provisioning errors with context (#7070)
e4447c4ba783482c35b096cfbe0e0ffa0403b450 core: Use KeepAliveConfig to pass keepalive_interval to listener's accepted sockets (#7151)
b9710c6af4f764b463a8e0c080783f2b7fb15ce0 fileserver: Add a few doc lines about Etag file content (#7173)
3b4d966fba069e9895980dbbf05f84bf818968ba fileserver: Add sort buttons in grid mode (#7089)
54d03ced48a8ed2264ae9248c81f00a1c2648d82 fileserver: Add support for .avif image format (#6988)
790f3e0885cae4f6362f35f8ed4f725824d46089 fileserver: denote license for embedded JavaScript for LibreJS (#7127)
94147caf31f7e56a919432accc2779a22b2ed1a0 fileserver: map invalid path errors to fs.ErrInvalid, and return 400 for any invalid path errors. (close #7008) (#7017)
67debd0e11c3c880bb6fc7a92325989576b0a7fa fileserver: set Range header for precompressed static files to force Content Length header to appear (#7042)
89ed5f44de61fcb0c3b7ce93bfefbb8e775d1964 fix: Remove nil arg from zapslog.NewHandler call (#6984)
3723e895854a1f9e528ec278acb0ed8ef1c63f81 go.mod: Upgrade CertMagic to v0.24.0