配置
管理 API
配置的动态下发、遍历与导出,全部走一个本地端点。
Caddy 的管理端点是它最与众不同的地方之一:配置是活的,可以随时读取、修改、导出,所有改动都优雅、零停机。
端点一览
| 方法与路径 | 作用 |
|---|---|
GET /config/ | 读取当前完整配置 |
POST /load | 替换整份配置 |
POST /stop | 优雅停止 Caddy |
GET /config/...路径 | 读取配置里的某个子树 |
POST /config/...路径 | 在该子树下插入或创建 |
PUT /config/...路径 | 覆盖该子树 |
PATCH /config/...路径 | 修改数组里的某一项 |
DELETE /config/...路径 | 删除该子树 |
GET /id/...模块 ID | 按模块的 ID 定位,不受数组位置影响 |
替换整份配置
curl localhost:2019/load \
-H "Content-Type: application/json" \
-d @caddy.json/load 是唯一一个会替换整份配置的端点,Caddyfile 走 API 时也只能用它。
配置遍历
配置文档的路径就是 API 的路径。想看 HTTP 应用里第一台服务器的第一条路由,直接问:
curl localhost:2019/config/apps/http/servers/srv0/routes/0往这个路径 POST 一段 JSON 就能加一条路由:
curl localhost:2019/config/apps/http/servers/srv0/routes \
-H "Content-Type: application/json" \
-d '{
"handle": [{
"handler": "static_response",
"body": "Hi"
}]
}'优雅与回滚
新配置会先启动,确认无误后再停掉旧配置,所以在极短的时间窗口里两份配置同时在运行。如果新配置加载失败,Caddy 会回滚到上一份能用的配置,服务器不会因此下线。
导出
当前运行中的配置随时可以导出归档:
curl localhost:2019/config/ > running.json这也是把运行时状态固化下来、交给版本管理的方式。前提是你最初就是用 JSON 配置的;走适配器进来的配置无法还原回原格式。