-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Open
Description
Issue Details
Description
When importing a snippet from a separate file that contains a directive wrapping a {block} placeholder (such as reverse_proxy), Caddy v2.11 silently ignores the provided block during the import.
This bug only seems to happen if the snippet is in a separate file.
Steps to reproduce
./Caddyfile
{
admin off
auto_https off
}
import snippets
:8080 {
import test {
this_is_nonsense
}
}
./snippets
(test) {
reverse_proxy {
{block}
}
}
run
docker run --rm -p 8080:8080 -v "$PWD:/etc/caddy:ro" caddy:2.11 caddy run --config /etc/caddy/Caddyfile
Expected Behavior (Caddy v2.10)
In Caddy v2.10, the {block} is injected correctly. The parser evaluates the contents, sees the invalid this_is_nonsense subdirective inside reverse_proxy, and rightfully refuses to start:
$ docker run --rm -p 8080:8080 -v "$PWD:/etc/caddy:ro" caddy:2.10 caddy run --config /etc/caddy/Caddyfile
Error: adapting config using caddyfile: parsing caddyfile tokens for 'reverse_proxy': unrecognized subdirective this_is_nonsense
Actual Behavior (Caddy v2.11)
In Caddy v2.11, the {block} is entirely ignored. The reverse_proxy directive evaluates as empty, so Caddy happily starts up with no errors.
$ curl -i http://127.0.0.1:8080/
HTTP/1.1 503 Service Unavailable
Server: Caddy
Date: Mon, 09 Mar 2026 20:19:33 GMT
Content-Length: 0
Assistance Disclosure
AI used
If AI was used, describe the extent to which it was used.
ChatGPT improved the issue description
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels