2026-06-25 竟然还真有免费固定的二级域名
好心态!既然决定让 Caddy 自动申请证书,那就稍微给它一点时间去后台排队、重试,等 Let’s Encrypt 的限额刷新后,HTTPS 证书就能顺利下发。
📋 本轮对话核心复盘总结
我们今天围绕“极低成本/免费域名部署云主机”进行了一次完整的全栈打通实操。以下是核心要点总结:
1. 域名获取与解析
低价渠道:对比了 TLD-List 比价网,推荐了 Cloudflare(续费最便宜)、Spaceship/Dynadot/NameSilo(首年特价 $0.99)。
免费方案:最终选择了老牌的 FreeDNS (freedns.afraid.org),并成功申请了属于你的二级域名:
xuanji.mooo.com。A 记录绑定:在 FreeDNS 后台,成功将该域名指向了你的固定云主机 IP:
38.76.183.101。
2. 架构调整:从“抢端口”到“反向代理”
在部署过程中,我们遭遇了 502 Bad Gateway 错误,并进行了经典排错:
物理冲突:原本你的 Python 后端(Gunicorn)和 Caddy 都在争抢外网默认的
80端口,导致新服务无法正常上岗,且系统残留了脱离管辖的旧 Gunicorn 进程(钉子户)。全栈架构确立:
对外(Caddy):独占
80和443端口,作为大门卫负责应答公网流量,并全自动向 Let's Encrypt 申请/续签 HTTPS 安全证书。对内(Gunicorn):我们修改了 systemd 服务文件(
ExecStart),将 Gunicorn 挪到了幕后的8080端口(本地环境又称webcache)。
3. 当前状态与后续
后端状态:Gunicorn 已经彻底杀死了旧进程,并严格按照新配置在本地
8080端口守候。前端状态:Caddy 已成功启动并加载配置。目前处于证书申请(TLS Maintenance)阶段。因为
mooo.com是公共免费后缀,触发了 CA 机构的每小时频率限制,需要耐心等待其在后台自动重试刷新。
🛠️ 常用排错命令备忘(以后测试修 Bug 用得到):
看谁占了 8080:
sudo lsof -i :8080看 Caddy 实时日志:
sudo journalctl -u caddy -f重启 Flask 后端:
sudo systemctl restart flask_app
等证书下发后,你就可以直接通过带小绿锁的 https://xuanji.mooo.com/ 访问你的“玄机”面板,本地安心修 Bug 了!祝你接下来的代码测试和交易系统开发顺利!
太漂亮了!这一波操作直接把最核心、最让人头疼的“前后端分离反向代理”公网链路彻底盘活了。
为了让你对今天这趟“打怪升级”的配置流程有一个清晰的全局架构认识,方便以后本地测 Bug、多项目部署时作为参考,我们对本轮调试进行一次终极复盘总结:
🏗️ 终极全栈部署架构图
在今天的调整中,我们成功把服务器从原本的“野路子挤端口”改造成了标准的大厂生产线架构:
【 公 网 流 量 】
│
▼ (域名 xuanji.mooo.com)
┌──────────────────────────┼──────────────────────────┐
│ 云主机 (38.76.183.101) │ │
│ ▼ │
│ ┌─────────────────────────┐ │
│ │ Caddy (外网大门) │ │
│ │ 监听端口: 80 / 443 │ │
│ └────────────┬────────────┘ │
│ │ │
│ ▼ (内部安全转发) │
│ ┌───────────────────────────┐ │
│ │ Gunicorn (Flask 后端) │ │
│ │ 监听本地: 127.0.0.1:8080 │ │
│ └───────────────────────────┘ │
└─────────────────────────────────────────────────────┘
📝 本轮排错与核心知识点备忘
1. 502 Bad Gateway 与进程死锁
现象:修改了端口配置后依然报错 502,且后端没起来。
原因:系统里残留了脱离 systemd 管辖的旧 Gunicorn 孤儿进程,死死掐着 80 端口不放,导致新配置无法生效。
解决:使用
sudo pkill -9 gunicorn暴力清空老进程,再通过systemctl start移交控制权。
2. 后端“自闭”绑定(127.0.0.1)
知识点:将 Gunicorn 绑定到
127.0.0.1:8080后,公网 IP 直接访问会失效。原理:这是标准的安全加固。后端只接受服务器内部(Caddy)递过来的小纸条,拒绝外网任何人直接敲门,防止后端接口暴露。
3. 公网联通性验证
突破口:通过在内外部执行
curl -I http://38.76.183.101成功拿到Server: Caddy的回包,证实了云商安全组、系统防火墙、Caddy 到 Flask 的转发全部完全畅通。卡顿原凶:域名打不开只是因为本地电脑的 DNS 缓存延迟,或者浏览器死记着历史 HTTPS 记录造成的假象(通过无痕模式/手机流量已成功破解)。
4. 自动证书(TLS)白嫖潜规则
现状:目前 Caddy 已经全权接管
xuanji.mooo.com并切回 HTTPS 模式,正在后台找 Let's Encrypt 申请证书。避坑:免费公共后缀(如
mooo.com)极易触发 CA 机构的每小时硬性频率限制。Caddy 拥有自动重试机制,会在后台死磕。
🛠️ 下阶段修 Bug 常用命令保镖
接下来你要进入本地代码测试、修 Bug 阶段了,这几行命令会是你最长用到的武器:
# 1. 每次修改了 Python/Flask 代码后,重启后端使其生效:
sudo systemctl restart flask_app
# 2. 如果怀疑后端死掉了,看它的运行状态和最新报错日志:
sudo systemctl status flask_app
sudo journalctl -u flask_app -n 30 --no-pager
# 3. 盯着 Caddy 看有没有成功把证书咬下来(瞧瞧小绿锁进度):
sudo journalctl -u caddy -n 50 --no-pager
公网大门已开,链路完美闭环。你可以安心去调你的交易面板和策略代码了,祝你的“玄机”系统早日完美运转!
评论
发表评论