Caddy 反代 502 怎么排查?先看后端端口是不是活着
Caddy 反代 502 怎么排查?先看后端端口是不是活着
Caddy 502 通常不是证书问题,而是 Caddy 连不上后端。后端没启动、端口绑定错、容器只监听内部网络、反代地址写错,都会让页面直接 502。本文按最短路径排查。
先说结论:谁适合这样做
适合:
- Docker 服务反代到 HTTPS
- 多个二级域名共用 Caddy
- 需要快速区分前端和后端故障
不适合:
- 复杂 Kubernetes Ingress
- 高并发网关调优
- 证书 DNS 验证专题
这一步要先讲清楚,是因为很多服务器教程只告诉你“怎么装”,却不告诉你“该不该装”。如果场景不匹配,后面配置写得再漂亮,也只是把问题推迟到上线之后。
服务器配置怎么选
Caddy 本身很轻,1 核 2G 足够反代多个小服务。真正要留意的是后端服务是否只暴露到 127.0.0.1,以及 Caddy 和 Docker 网络之间能不能互通。
我会把 Caddy 502 排查 放在雨云服务器 rainyun-com的 1 核 2G 机型上,同时反代多个轻量 Web 服务没有压力。注册填优惠码2026off领 5折,这类配置更适合先稳定跑起来,再按真实负载升级。
落地步骤
- 准备一台干净的 Ubuntu 22.04 或 Debian 12 服务器,先确认 SSH、时间同步和防火墙状态。
- 规划目录:
/opt/caddy-502-bad-gateway-fix-20260601。配置、数据、备份脚本都放在同一主题目录下,后面迁移更省事。 - 根据主题放行端口:
80/443。游戏和网络服务尤其要分清 TCP/UDP。 - 先用测试数据跑通,再导入正式数据或邀请其他人使用。
关键配置示例
下面配置用于说明关键项,发布前要按当前官方文档确认镜像版本、环境变量和端口。
app.example.com{encode zstdgzipreverse_proxy127.0.0.1:8080}# 如果 Caddy 也在 Docker 网络内,后端可能要写服务名:# reverse_proxy app:8080启动验证
在 Caddy 所在环境里执行curl -I http://127.0.0.1:8080。如果这里都失败,先修后端,不要反复改 Caddyfile。
验证时不要只看进程是否存在,至少完成一次真实动作:游戏服要让外部玩家连接,应用要登录并写入一条数据,运维项要确认状态变化真的生效。这样能提前发现端口、权限、反代和路径问题。
常见问题和排错
宿主机 Caddy 反代到容器时,容器必须映射到宿主机端口;Docker 内 Caddy 反代到另一个容器时,通常要用服务名而不是 127.0.0.1。
排查建议按这个顺序来:
- 看日志里第一条明确错误,不要只看最后一屏。
- 查端口监听和云安全组,确认协议没有写错。
- 检查数据目录权限,尤其是容器用户和宿主机目录映射。
- 回滚到上一个能工作的配置,再逐项恢复新改动。
备份和后续维护
备份 Caddyfile 和站点配置。多服务反代建议每次改动前复制一份可回滚文件。
维护时建议保留一份“最小恢复说明”:需要哪些文件、恢复命令是什么、域名和端口在哪里改。等真正出问题时,人通常没那么冷静,清单比记忆可靠。
总结
Caddy 502 的核心问题是“它能不能连到后端”,先验证后端端口,比盲改证书和域名快得多。
