mcpField
C
caddy

caddy

github.com/muninn-huginn云与 DevOps074 次安装38 周前更新
代码仓库

关于 caddy

用于通过 Caddy Admin API 管理本地开发反向代理的技能,涵盖状态检查、路由注册、更新和删除,面向本地项目代理管理。

主要功能

  1. 01检查 Caddy 状态并列出路由
  2. 02注册命名的 localhost 代理
  3. 03查找可用端口
  4. 04更新或删除代理路由
  5. 05处理常见设置错误

适用场景

  1. 01通过命名的 .localhost 地址访问本地项目
  2. 02查看现有开发代理路由
  3. 03更改代理后端端口
  4. 04排查未运行的 Caddy 服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/muninn-huginn/caddy-skill --skill caddy

安装后在 Claude Code 中输入/caddy确认已加载。

详细介绍

Caddy 本地代理管理器

通过 Caddy 的 Admin API(localhost:2019)管理本地开发反向代理。

会话命名

注册代理时,使用以下任一方式:

  1. 用户提供名称:完全按用户指定的名称使用
  2. 根据上下文生成:使用项目目录名称 + 简短随机后缀(例如,myapp-x7k2)

生成示例:

NAME="$(basename "$PWD" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g')-$(head -c4 /dev/urandom | xxd -p | head -c4)"

快速参考

任务命令
检查状态curl -sf http://localhost:2019/config/
列出路由curl -sf http://localhost:2019/config/apps/http/servers/local_proxies/routes
添加路由POST /config/apps/http/servers/local_proxies/routes
删除路由DELETE /id/proxy_<name>

工作流

检查 Caddy 状态
curl -sf http://localhost:2019/config/ 2>/dev/null

如果失败:"Caddy 未运行。安装:brew install caddy,启动:caddy start"

列出所有代理
curl -sf http://localhost:2019/config/apps/http/servers/local_proxies/routes 2>/dev/null

以表格形式显示:名称 | URL | 后端

注册代理
  1. 获取或生成名称(询问用户,或根据项目名称 + 随机后缀生成)

  2. 查找可用端口(如果未指定):

for port in $(seq 3000 3100); do
  lsof -i :$port > /dev/null 2>&1 || { echo $port; break; }
done
  1. 按需初始化服务:
curl -sf http://localhost:2019/config/apps/http/servers/local_proxies > /dev/null 2>&1 || \
curl -sf -X POST http://localhost:2019/load \
  -H "Content-Type: application/json" \
  -d '{"apps":{"http":{"servers":{"local_proxies":{"listen":[":80"],"routes":[]}}}}}'
  1. 添加路由(替换 NAME 和 PORT):
curl -sf -X POST "http://localhost:2019/config/apps/http/servers/local_proxies/routes" \
  -H "Content-Type: application/json" \
  -d '{"@id":"proxy_NAME","match":[{"host":["NAME.localhost"]}],"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"localhost:PORT"}]}],"terminal":true}'
  1. 报告:"已注册:http://NAME.localhost → localhost:PORT"
移除代理
curl -sf -X DELETE "http://localhost:2019/id/proxy_NAME"
更新代理

先删除,再使用新端口重新添加。

路由 JSON 结构

{
  "@id": "proxy_<name>",
  "match": [{"host": ["<name>.localhost"]}],
  "handle": [{"handler": "reverse_proxy", "upstreams": [{"dial": "localhost:<port>"}]}],
  "terminal": true
}

错误处理

错误解决方案
Caddy 未运行brew install caddy && caddy start
端口 80 被拒绝sudo caddy start
路由已存在询问用户是要更新还是选择其他名称

平台说明

  • macOS:*.localhost 会自动解析为 127.0.0.1
  • Linux:可能需要添加 /etc/hosts 条目

评论

支持 Markdown