用 Caddy 给 Docker 应用配置域名和 HTTPS
应用已能从宿主机访问时,用 Caddy 配置域名和 HTTPS。代理也在容器内时,要改用共享网络地址。
Docker 应用已经能从宿主机打开,接下来可以用 Caddy 配域名和 HTTPS。这里的 Caddy 是宿主机系统服务,应用映射到 127.0.0.1:3000。如果 Caddy 也在容器里,上游应按共享网络和服务名配置。
先准备 DNS 和公网入口
将域名 A 记录指向 VPS。配置 AAAA 时,确保这台机器的 IPv6 也能到达。Caddy 要使用的 80、443 不能被另一套代理重复占用;已有面板或网站时,先确定由哪个服务统一接入。
没有安装 Caddy 时,按官方安装说明选择自己的系统,不把不同发行版的软件源混用。安装完成后,再处理站点配置。
在已有 Caddyfile 增加站点
编辑实际使用的配置文件,保留其他网站,加入下面的块。替换示例域名与应用端口:
app.example.com {
reverse_proxy 127.0.0.1:3000
}
域名写在站点地址中,Caddy 会按条件处理自动 HTTPS。不要在上游需要 HTTP 时随意填成 HTTPS,也不要因为公网用了 HTTPS 就认为后端一定要另装证书。
系统服务使用 /etc/caddy/Caddyfile 时,先验证再重载:
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
sudo journalctl -u caddy --no-pager -n 60
若实际服务使用其他配置路径,上述路径也要修改。配置通过后,再打开新站确认访问正常。
证书申请失败,看对应错误
先核对域名解析、IPv6、公网入口和验证方式。CDN 代理参与访问时,也要检查它到源站的连接与 HTTPS 设置。Caddy 日志会区分解析、连接与证书验证错误;不要反复删除已有证书来碰运气。
502 时先访问上游
curl -I http://127.0.0.1:3000
sudo docker compose ps
sudo docker compose logs --tail=100
上游连接失败,查应用监听和端口映射;上游正常,再比较实际 Caddyfile 与日志。代理位于容器内时,127.0.0.1 指代理容器自身。公网测试除了首页,还应包含登录、上传和应用需要的长连接,避免只验证一个静态页面。
新 VPS 要能开放所需端口
需要域名指向可达入口,服务器允许所用端口,后端应用也必须能被代理访问。准备购买新实例时,按Docker VPS 的网络条件核对;已有机器先解决 DNS、端口与监听错误,换机不会自动修复同一份代理配置。
普通 HTTPS 入口优先选择能够按本文方式开放 80、443 的 Linux 实例,后台管理端口另做限制。想用中文资料管理,可查看 雨云 RCS 的公网入口与系统;想把代理和测试应用单独放一台机器,可以比较 Evoxt 的地区与实例配置。购买前确认 IP、端口与云防火墙条件,NAT 套餐需要重新规划映射,不能照普通公网方案付款。




