# Caddy 反向代理 — 操作参考 > 部署:2026-06-12 | 替代:Lucky ## 配置文件 ``` 路径: /etc/caddy/Caddyfile 编辑后: sudo caddy fmt --overwrite /etc/caddy/Caddyfile 重载: sudo systemctl restart caddy ``` ## 当前管理的域名 ``` www.xybkwd.top, xybkwd.top → localhost:8090 (Halo 博客) gitea.xybkwd.top → localhost:3000 (Gitea) dashboard.xybkwd.top → localhost:9000 (Beast Trader Dashboard) ``` ## 常用命令 ```bash # 查看状态 sudo systemctl status caddy # 查看日志 sudo journalctl -u caddy -n 50 --no-pager # 实时日志 sudo journalctl -u caddy -f # 重启 sudo systemctl restart caddy # 测试配置 sudo caddy validate --config /etc/caddy/Caddyfile # 格式化配置 sudo caddy fmt --overwrite /etc/caddy/Caddyfile # 查看证书 sudo caddy cert-info # 或直接访问 https://域名 看浏览器锁 ``` ## 添加新服务 在 `/etc/caddy/Caddyfile` 里加一行 block: ``` 你的子域名.xybkwd.top { reverse_proxy localhost:服务端口 } ``` 然后 `sudo caddy fmt --overwrite /etc/caddy/Caddyfile && sudo systemctl restart caddy` Let's Encrypt 会在第一次 HTTPS 请求时自动签发证书,续期也是全自动的。 ## 故障排查 | 现象 | 排查 | |:---|:---| | 域名无法访问 | `curl -sk https://localhost:443 -H "Host: 域名"` | | 证书错误 | `echo \| openssl s_client -connect localhost:443 -servername 域名` | | Caddy 启动失败 | `sudo journalctl -u caddy --no-pager -n 30` | | 端口被占 | `sudo ss -tlnp \| grep ":80\|:443"` | ## 安全说明 - Caddy 管理 API 只在 `localhost:2019`,外网不可达 - 所有证书使用 Let's Encrypt,自动续期(3个月) - 后端服务(Gitea:3000, Dashboard:9000)已绑定 `127.0.0.1`,只能通过 Caddy 访问