静态部署最有用的属性是:运维人员不用读应用代码,就能回答"这条响应是哪个目录提供的?"。Caddy 的 root 与 file_server 指令直接提供了这个边界。
让根目录明确
一个最小的站点块可以贴近制品布局:
www.example.test {
root * /srv/example-site
encode zstd gzip
header {
-Server
X-Content-Type-Options nosniff
X-Frame-Options DENY
Referrer-Policy strict-origin-when-cross-origin
}
file_server
}
主机名与路径都是占位值;www.example.test 不是可签发公开可信证书的生产名称。生产环境应使用自己控制且可解析的主机名,测试环境的本地 TLS 信任则另行安排。发布命令应发布一个完整目录、核验它,然后才把这个目录设为配置里的根。在新目录通过冒烟测试之前,保留旧的已知良好目录。
检查边缘,而不只是文件树
请求一个 HTML 页面、一个可下载的文本文件和一个缺失路径。把内容类型与状态码与本地制品比较。即使 404 页看起来很精致,若返回 200 仍是部署缺陷。
当 Caddy 管理 HTTPS 时,证书签发与 HTTP 到 HTTPS 的重定向都属于边缘行为。请从裸的 HTTP 监听器测试重定向,并从公共主机名读取证书名称。不要只凭进程健康就推断成功。
根目录是发布边界,不是沙箱
把版本控制元数据、备份、凭据与私有配置留在发布树之外。Caddy 会跟随根目录中的符号链接,因此链接可能暴露根目录外的文件。既要检查制品内容,也要检查服务用户的读取与目录穿越权限。此外,仅把 404.html 放进目录并不会配置自定义错误处理;应核验缺失路由的状态码与预期错误页行为。
来源
- Caddy
file_server指令,静态文件服务与根目录选择,已核验 2026-10-15。 - Caddy
header指令,响应头配置,已核验 2026-10-15。 - Caddy Automatic HTTPS,证书签发与 HTTPS 重定向,已核验 2026-10-15。
- MDN:
X-Frame-Options,防止被嵌套的选项,已核验 2026-10-15。 - RFC 7034 — X-Frame-Options,DENY 嵌入策略,已核验 2026-10-15。
- 静态网站发布检查清单,本地配套资源。
- RFC 6761 — Special-Use Domain Names,保留的
.test名称,已核验 2026-10-15。