已经成功把项目跑起来了,设置域名反向代理(Reverse Proxy)是让它变得“专业”的最后一步。这样你就可以用 https://你的域名 访问,而不用输端口号,还会自动拥有那把安全的小锁头(HTTPS)。
考虑到你之前的环境配置经历,我强烈推荐使用 Caddy。 理由:Nginx 需要手动配置 SSL 证书(Certbot),比较繁琐容易出错;而 Caddy 只需要你告诉它域名,它会自动申请、配置并自动续期 HTTPS 证书,完全全自动。
以下是具体步骤:
第一步:域名解析 (DNS 设置)
在操作 VPS 之前,你必须先去你的域名服务商(如阿里云、腾讯云、NameSilo、Cloudflare 等)设置解析。
添加记录:
如果你的 VPS 是 IPv4:添加一个 A 记录,指向你的 VPS IP。
如果你的 VPS 是 纯 IPv6 (像你刚才展示的 2a02:…):添加一个 AAAA 记录,指向你的 IPv6 地址。
注意:如果你启用了 Cloudflare 的小云朵 (Proxy),它会自动处理 IPv6/IPv4 转换,非常方便。
第二步:安装 Caddy
在 Ubuntu 上安装 Caddy 非常简单。请依次执行:
# 1. 安装必要的依赖
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
# 2. 添加 Caddy 官方源 Key
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# 3. 添加源文件
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# 4. 更新并安装
sudo apt update
sudo apt install caddy
第三步:配置反向代理 (最简单的一步)
Caddy 的配置文件非常人性化。
编辑配置文件
sudo nano /etc/caddy/Caddyfile
清空或替换里面的内容 把里面的内容全部删掉(或者注释掉),换成下面这几行。 ⚠️ 替换 你的域名.com 为你真实的域名。
代码段
你的域名.com {
# 把流量转发给本地的 12345 端口
reverse_proxy localhost:12345
}
如果你的机器是纯 IPv6 环境,且 localhost 不工作,可以将 localhost:12345 改为
[::1]:12345。
保存退出
按 Ctrl + O 保存
按 Enter 确认
按 Ctrl + X 退出
第四步:放行 80 和 443 端口
Caddy 申请证书需要用到 80 端口,网页访问需要 443 端口。
# Ubuntu 防火墙放行
sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload
(如果是甲骨文云等,别忘了去网页后台的安全组也放行这两个端口)
第五步:重启 Caddy 使配置生效
sudo systemctl restart caddy
查看状态(可选):
sudo systemctl status caddy
验证
现在,在浏览器里直接输入 https://你的域名.com。
第一次访问可能会稍微慢 1-2 秒,因为 Caddy 正在后台帮你申请 SSL 证书。
之后你就会看到你的“文件快递柜”,并且浏览器地址栏有一把安全锁 🔒。
常见问题排查
如果访问报错 502 Bad Gateway: 这说明 Caddy 运行正常,但它连不上你的 Python 项目。
确认你的 Python 项目还在运行 (sudo systemctl status filecodebox)。
确认端口没变。
如果是纯 IPv6 机器,尝试修改 Caddyfile,把 reverse_proxy localhost:12345 改成 reverse_proxy [::1]:12345 然后重启 Caddy。
在同一个机器上我还想反代别的项目 caddy配置文件怎么写在同一个机器上我还想反代别的项目 caddy配置文件怎么写
1. 编辑配置文件
sudo nano /etc/caddy/Caddyfile
2. 修改内容结构
将文件修改为如下格式(注意看结构,是一个域名对应一个花括号块):
代码段
# 第一个项目 (现有的 FileCodeBox)
share.abc.com {
reverse_proxy localhost:12345
}
# 第二个项目 (比如你的新项目)
blog.abc.com {
# 这里的 8080 改成你新项目实际运行的端口
reverse_proxy localhost:8080
}
# 第三个项目...
demo.abc.com {
reverse_proxy localhost:9000
}
注意:如果你的机器是纯 IPv6 环境,且新项目只监听了 IPv6,记得把 localhost 改成 [::1],例如 reverse_proxy [::1]:8080。
3. 保存并重启
保存文件 (Ctrl+O, Enter, Ctrl+X),然后重启 Caddy:
sudo systemctl restart caddy
请运行以下命令检查端口 3000 是否有东西在跑:
sudo ss -tulpn | grep 3000
**如果有输出:说明程序活着,稍等几秒再刷新网页。
**如果没输出:说明你的后端程序挂了,你需要先去启动那个运行在 3000 端口的程序。
关键前提:DNS 解析要跟上
在修改 Caddy 配置之前或之后,别忘了去你的域名服务商(阿里云/Cloudflare等):
添加新的解析记录:
如果你用了 blog.abc.com,就需要添加一个名为 blog 的记录。
记录值(IP地址)和之前的那个域名完全一样,指向同一个 VPS IP。
(如果是纯 IPv6 机器,记得是 AAAA 记录)。