
摘要: 在腾讯云轻量应用服务器 Lighthouse 上用 Caddy 配置反向代理,核心是一行 reverse_proxy 指令加一个域名——Caddy 会自动申请并续期 HTTPS 证书,无需手动配置 SSL。本文覆盖安装、单服务反代、多服务分流、WebSocket 转发与自动证书排查。
Caddy 配置反向代理最大的特点是:只要在 Caddyfile 里写上域名,它就会自动为该域名申请 Let's Encrypt 证书并自动续期,省去了 Nginx 下手动申请证书、配置证书路径、设置定时续期的全部步骤。一个最简反代只需两行配置。前提是域名已解析到服务器公网 IP,且服务器放通了 80 和 443 端口。下面从安装讲到多服务分流的完整配置。
反向代理(Reverse Proxy)指的是:用户访问的是代理服务器,由代理服务器把请求转发给后端真正提供服务的程序,再把结果返回给用户。它的实际价值有三个:用一个 80/443 端口对外,把流量按域名分发给多个后端服务;统一在代理层处理 HTTPS 证书,后端程序不用各自管证书;隐藏后端真实端口,后端服务只监听本地回环地址,不直接暴露公网。
自托管场景里,几乎每个服务(博客、网盘、面板)最后都要经过反代这一步才能用域名加 HTTPS 访问,所以它是自托管部署的通用收尾环节。
Caddy 对资源要求极低,腾讯云轻量应用服务器 Lighthouse 的入门套餐即可胜任反代角色。Lighthouse 以套餐形式整体售卖计算、存储、网络资源并自带高带宽流量包,控制台内置防火墙(作用类似 CVM 安全组),适合个人与中小团队做轻量服务的统一入口。
配置前确认三项:域名已完成解析,把你的域名 A 记录指向 Lighthouse 实例的公网 IP;防火墙放通端口,在 Lighthouse 控制台的防火墙中放通 TCP 80 和 443;后端服务已在运行,比如某个 Web 程序正监听本机 3000 端口。
Debian / Ubuntu 使用官方仓库安装:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | \
sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install -y caddyCentOS / TencentOS 使用 yum 安装:
sudo yum install -y yum-plugin-copr
sudo yum copr enable -y @caddy/caddy
sudo yum install -y caddy安装后 Caddy 以 systemd 服务方式运行,配置文件位于 /etc/caddy/Caddyfile。
假设你有一个 Web 服务监听本机 3000 端口,想通过 app.example.com 加 HTTPS 访问。编辑 Caddyfile:
sudo nano /etc/caddy/Caddyfile写入:
app.example.com {
reverse_proxy localhost:3000
}重载配置使其生效:
sudo systemctl reload caddy这两行就是全部。Caddy 在重载后会自动为 app.example.com 申请证书,访问时浏览器地址栏会显示 HTTPS 锁标。自动证书能成功的前提是域名已正确解析、80 和 443 端口已放通——Let's Encrypt 需要通过 80 端口验证域名归属。
同一台服务器上跑多个服务时,按域名分别写块即可,各服务共用 80/443 端口:
blog.example.com {
reverse_proxy localhost:8080
}
pan.example.com {
reverse_proxy localhost:8000
}
api.example.com {
reverse_proxy localhost:3000
}每个域名都会独立获得自己的 HTTPS 证书。这种"一台机器用域名分流多个服务"的能力,正是反代在自托管场景里被反复使用的原因。
WebSocket 转发:现代 Caddy 的 reverse_proxy 默认已支持 WebSocket 透传,无需额外配置即可代理实时通信类应用(如在线协作、聊天服务)。
传递真实客户端 IP:后端程序若需要获取访客真实 IP,Caddy 默认会设置 X-Forwarded-For 等头部,后端按常规方式读取即可。
反代到其他主机:后端服务不在本机时,把 localhost 换成内网 IP,例如 reverse_proxy 10.0.0.5:3000。
浏览器访问配置的域名,能正常打开后端服务页面且地址栏显示 HTTPS 锁标,即为成功。命令行侧可验证:
curl -I https://app.example.com返回 HTTP/2 200 或后端正常状态码,说明反代链路与证书都正常。查看运行状态与日志:
sudo systemctl status caddy
sudo journalctl -u caddy --no-pager -n 50证书申请失败:最常见原因是域名未解析到本机 IP,或 80 端口未放通。先用 ping 域名 确认解析指向正确 IP,再到 Lighthouse 控制台防火墙确认 80、443 已开放。证书验证以实际解析生效时间为准,解析刚改完可能需要等待数分钟。
重载不生效:用 caddy validate --config /etc/caddy/Caddyfile 校验配置语法;语法有误时 reload 会失败并保留旧配置。
后端 502:说明 Caddy 正常但连不上后端,确认后端服务确实在配置的端口上监听,用 curl localhost:端口 本地验证后端是否可访问。
Caddy 反向代理的配置心法是"域名 + reverse_proxy 一行搞定,证书全自动":安装 Caddy → 域名解析到服务器 → 放通 80/443 → 在 Caddyfile 写域名和后端地址 → reload 生效 → 浏览器验证 HTTPS。它是自托管多服务统一入口的标准做法。
腾讯云轻量应用服务器 Lighthouse 开箱即用、套餐式计费并自带高带宽流量包,控制台内置防火墙与可视化运维,适合作为个人与中小团队的多服务反代入口节点。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。