CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Caddy 反向代理入门/课时/排障
RawBlame
课时目录12 节

Caddy 反向代理入门

  1. 01Caddy 是什么
  2. 02安装与运行
  3. 03Caddyfile 语法
  4. 04自动 HTTPS
  5. 05反向代理
  6. 06双后端拓扑
  7. 07静态文件
  8. 08Docker 运行 Caddy
  9. 09Caddy vs Nginx
  10. 10K8s Ingress 对照
  11. 11排障
  12. 12综合练习

排障

caddy validate、日志、证书失败。

25 分钟

排障

Caddy 排障围绕 caddy validate、日志 与 ACME 证书失败 三类问题。对照 Nginx 的 nginx -t 与 error.log,并串联 dns-troubleshoot 排查域名与证书。

学习目标

  • 用 caddy validate / caddy run --watch 定位配置错误
  • 读懂 access 与 error 日志中的 upstream 失败
  • 处理证书申请失败与 502 反代问题

核心内容

配置校验

caddy validate --config /etc/caddy/Caddyfile
caddy fmt --overwrite /etc/caddy/Caddyfile   # 格式化
caddy run --config /etc/caddy/Caddyfile --watch  # 开发调试

语法错误在 validate 阶段即报错;生产改配置后 先 validate 再 reload。

常见现象速查

502 Bad Gateway       → upstream 未监听 / 错误端口 / Docker 网络不通
404 on /api/foo       → 未 strip_prefix 或 handle 顺序错误
证书一直申请中       → DNS 未指向本机 / 80·443 被挡 / LE 速率限制
redirect 循环         → 后端强制 https 但 X-Forwarded-Proto 未信任
WebSocket / HMR 失败  → 缺 Upgrade 头(见 caddy-proxy)

日志位置:systemd journalctl -u caddy;Docker docker compose logs caddy;文件由 log 指令指定。

ACME 失败排查

  1. dig www.coderoadmap.cn 确认 A 记录(dns-tools)
  2. 公网 curl -I http://www.coderoadmap.cn 是否可达(HTTP-01)
  3. 查看 /var/lib/caddy 或 Docker 卷 caddy_data 权限
  4. 测试环境改用 staging CA(caddy-ssl)

Let's Encrypt 每周申请次数有限,频繁删卷重建会触发限制。

与 Nginx 对照排障

症状Nginx 查Caddy 查
配置语法nginx -tcaddy validate
upstreamerror.log connect()日志 dial tcp
证书certbot logsjournal + ACME 目录
路由location 顺序handle 顺序

生产仍参考 nginx-essentials 运维手册;Caddy 测试机问题按上表平行处理。

调试反代

curl -v https://test.coderoadmap.cn/api/tracks
curl -v http://127.0.0.1:8080/tracks          # 绕过 Caddy 测 backend
curl -v http://127.0.0.1:3000/tracks/foo      # 绕过 Caddy 测 platform

确定问题在 Caddy 层还是 upstream 层,再缩小范围。

练习

  • 故意写错 Caddyfile,观察 caddy validate 报错信息
  • 停 backend 进程,用 curl 观察 Caddy 返回码
  • 列出 ACME 失败的三种 DNS/网络原因

小结

validate → 日志 → 分层 curl;证书问题先查 DNS 与 80/443。 下一课综合练习。

加载本节练习…
← 上一课K8s Ingress 对照下一课 →综合练习