博客域名部署全流程实录:从本地到全球可访问(含全部踩坑)
博客域名部署全流程实录:从本地到全球可访问
本文是本博客上线过程的真实记录。写它是因为:过程比预想曲折得多——光是"请输入正确格式的域名"就卡了很久,中间还有 CNAME 填错、节点不同步、证书警告等一连串坑。把这些全记下来,供自己以后换域名/换电脑参考,也供想给个人站点上线的朋友避坑。
#一、整体架构与路线图
txt本地 blog 目录(node server.js,端口 8766)─── 日常写作、改样式
│
▼ node build-static.js(零依赖静态化)
dist/ 静态产物 ──── 打 zip 上传 ────► 腾讯云 EdgeOne Pages(项目 my-blog)
│
▼ 绑定自定义域名 shaohua-lab.top(本文主题)
全球边缘节点 + 免费 DV 证书 + 强制 HTTPS = 全球可访问
- 本地版:
node server.js→ http://localhost:8766(写作预览用) - 线上版:https://shaohua-lab.top(EdgeOne Pages 托管,全站静态化)
- 核心事实:EdgeOne Pages 是腾讯云的边缘函数静态托管,免费额度足够个人博客长期跑,未备案域名也能用(服务走边缘节点,不强制大陆节点)。
#二、域名选购:后缀怎么选才划算
#2.1 候选后缀对比(2026 年行情,人民币)
| 后缀 | 首年价 | 续费价/年 | 特点 | 建议 |
|---|---|---|---|---|
.com | 60~90 | 60~90 | 最主流、最贵 | 有预算首选,但便宜好记的早就被抢光 |
.top | 14(促销) | 约 34 | 便宜、够用 | 个人博客性价比之选(本文选择) |
.xyz / .site | 10~20 | 30~80 | 便宜但续费波动大 | 可考虑,注意看续费价 |
.cn | 30 左右 | 30~60 | 国内后缀,实名必须 | 国内备案/合规场景更顺 |
.io / .dev 等 | 100+ | 100+ | 程序员情怀价 | 预算充裕再说 |
关键教训:首年的"促销价"不是真实成本,续费价才是。买之前一定查两个数:首年价 + 续费价。
#2.2 本次选购实录
- 想要的名字
shaohua.top被抢注,溢价盘标价 268 元——溢价域名果断放弃,不惯着。 - 最终定了
shaohua-lab.top:首年 14 元(促销),续费约 34 元/年;.top后缀对个人博客完全够用,搜索/社交场景没有明显劣势。 - 购买时只买域名本身,三样附加服务一律不勾:
- ❌ 轻量应用服务器(不需要,托管在 EdgeOne Pages)
- ❌ DNS 解析付费版(腾讯云自带免费 DNS 够用)
- ❌ SSL 证书付费版(EdgeOne 绑定域名后自动签发免费证书)
- 结算前需创建域名模板(实名认证):传身份证正反面,几分钟过审。未实名前解析不对外生效。
#2.3 备案到底要不要?
| 场景 | 是否需要备案 |
|---|---|
| 域名 + 大陆服务器(轻量/CVM/COS 大陆地域) | 需要 ICP 备案 |
| 域名 + EdgeOne Pages / 境外托管 | 不需要(本文路线) |
一句话:备案和你的网站能不能用 HTTPS 毫无关系。证书问题是证书的事(见坑 5),别被"没备案所以证书警告"的传言误导。将来若要上大陆服务器再补备案即可。
#三、EdgeOne Pages 部署(线上版第一站)
- 腾讯云控制台 → EdgeOne → Pages → 新建项目,命名如
my-blog; - 上传方式二选一:直接把
dist/目录拖进去,或打 zip 上传(本次用 zip,30 个文件约 93KB); - 部署完成后会得到一个预览域名(如
my-blog-dpp2q6m2b7xl.edgeone.cool):
- ⚠️ 预览域名约 3 小时时效,且访问要带
?eo_token参数; - 要变永久,必须绑定自己的自定义域名(下一节)。
#四、绑定自定义域名全流程(核心)
#第 1 步:添加自定义域名
EdgeOne Pages → my-blog → 设置 → 自定义域名 → 添加 shaohua-lab.top。
#第 2 步:归属权验证(TXT 记录)
EdgeOne 会给出三条信息,去腾讯云「域名解析」里照抄:
| 字段 | 填写内容 |
|---|---|
| 主机记录 | edgeonereclaim(EdgeOne 给) |
| 记录类型 | TXT |
| 记录值 | reclaim-xxx(EdgeOne 给的随机串) |
保存后直接可以点「验证」——腾讯云提示的"24~48 小时生效"是最坏情况说明,实际实测 1 分钟全球生效(见坑 2)。
#第 3 步:添加 CNAME 记录(本次最大坑,见坑 3)
| 字段 | 填写内容 |
|---|---|
| 主机记录 | @(代表根域名) |
| 记录类型 | CNAME |
| 记录值 | EdgeOne 给的完整地址原样照抄,如 shaohua-lab.top.pages.dnsoe5.com |
#第 4 步:等待边缘节点同步 + 签发证书
- 绑定后 EdgeOne 会自动部署域名配置,全球边缘节点逐台同步,约 10~30 分钟收敛(期间可能"时好时坏",见坑 4);
- 去「域名管理 → HTTPS 配置」申请免费 DV 证书(0 元,自动完成验证,几分钟签发)。没签证书前浏览器一定弹"不安全"(见坑 5)。
#第 5 步:开启三个安全开关(建议全开)
| 开关 | 建议 | 说明 |
|---|---|---|
| 强制 HTTPS | ✅ 开 | 重定向方式选 301(永久跳转,对 SEO 友好) |
| HSTS | ✅ 开(证书生效后) | 缓存时间 365 天、包含子域名、预加载均可开;含义 = 浏览器强制该域名永远走 HTTPS |
| OCSP 装订 | ✅ 开 | 纯性能优化,零副作用 |
HSTS「预加载」开启后本域名终身强制 HTTPS(EdgeOne 只下发声明头,不会自动提交预载名单,所以可逆,只是要等缓存过期)。只要没有退回 HTTP 的计划,开着没问题。
#完成标准(自查清单)
- [ ] http:// 访问自动 301 跳 https://
- [ ] 浏览器无任何证书警告(手机/电脑/平板各试一次)
- [ ] 证书 CN 等于你的域名(如
CN=shaohua-lab.top),非默认兜底证书 - [ ] 多网络(WiFi/流量)都能打开
#五、踩坑全记录(按发生顺序)
#坑 1:一直提示「请输入正确格式的域名」
- 现象:明明切了英文输入法、看着也是半角,填
shaohua-lab.top还是报格式错误。 - 根因:报错的几乎从不是"域名本身",而是粘贴内容带隐形杂质:
- 带了
https://或www.前缀(购买搜索框不允许); - 全角符号(
-全角连字符、.全角点); - 尾部空格 / 反斜杠 / 斜杠;
- 从微信/Word 复制带进来的隐藏换行、弯引号。
- 解决:用「复制按钮」产生纯净字符串再粘贴;粘贴后按
Home/End检查首尾有没有多余字符;不同输入框要求不同(购买框只填裸域名,地址栏才允许完整 URL)。 - 教训:格式校验失败先怀疑"看不见的字符",不要怀疑自己的输入法。
#坑 2:TXT 记录提示"最快 30 分钟、一般 24~48 小时生效"
- 现象:保存 TXT 后腾讯云弹出大段免责声明,看着要等一两天。
- 根因:这是运营商 DNS 缓存的最坏情况说明,纯免责声明。
- 解决:不干等,直接主动探测:
```bash
# 分别问阿里/腾讯/谷歌的公共 DNS
nslookup -type=TXT edgeonereclaim.shaohua-lab.top 223.5.5.5
nslookup -type=TXT edgeonereclaim.shaohua-lab.top 119.29.29.29
nslookup -type=TXT edgeonereclaim.shaohua-lab.top 8.8.8.8
```
实测保存后 1 分钟四个公共 DNS 全部返回,直接去点「验证」,秒过。
- 教训:解析生效与否以"公共 DNS 实际查询结果"为准,别被页面文案吓住。
#坑 3:CNAME 记录值填错 —— 本次最大的坑
- 现象:解析添加
CNAME @ → pages.dnsoe5.com后,等了 5 分钟公共 DNS 仍然是 NXDOMAIN(域名不存在),网站完全打不开。 - 根因:想当然地以为"记录值要去掉自己域名前缀"(常见 CDN 的惯性),但 EdgeOne Pages 的分配方式是每域名一条记录:
- ❌
pages.dnsoe5.com→ 实测 NXDOMAIN(这个裸地址根本不存在); - ✅
shaohua-lab.top.pages.dnsoe5.com→ 实测解析到 43.174.246.43 / 43.174.247.43。 - 控制台显示的
shaohua-lab.top.pages.dnsoe5.com是要原样照抄的记录值,不是"效果预览"。 - 解决:把记录值改成 EdgeOne 给的完整地址,几分钟后四大公共 DNS 全部生效。
- 教训:"填什么值"以目标地址能不能解析为准绳——填之前先
nslookup一下候选值,能解析到 IP 的那个才是对的。不要拿别家 CDN 的惯性套 EdgeOne。
#坑 4:部署后"时好时坏"——10 次请求一半超时
- 现象:CNAME 生效后,连续请求有时 200、有时 000(连接超时),抓狂。
- 根因:EdgeOne 域名配置是全球边缘节点逐台同步的。DNS 返回的两个节点(43.174.246.43 / 43.174.247.43)里,一个已就绪、一个还在同步,轮换到没就绪的节点就超时。
- 解决:不 panic,等收敛(实测约 20 分钟);用
curl --resolve定向测试单节点确认"哪个好了":
```bash
curl -k --resolve shaohua-lab.top:443:43.174.247.43 https://shaohua-lab.top
```
- 教训:全球 CDN 上线是非瞬时一致的,短时间"时好时坏"是正常过程,别误判成配置错误去改记录。
#坑 5:全设备弹"证书过期 / 不安全网站"
- 现象:手机、电脑、平板都能打开页面,但全部弹证书警告;页面显示"证书无效/过期/不安全"(不同浏览器文案不同)。
- 根因:能访问 ≠ 证书没问题。当时证书尚未签发,服务器下发的是腾讯的默认兜底证书
CN=*.cdn.myqcloud.com——证书和访问的域名不匹配,浏览器一律拦截。 - 解决:
- EdgeOne 控制台 → 域名管理 → HTTPS 配置(初始状态"未配置");
- 点配置/申请 → 选免费 DV 证书(自动签发)——不要选付费的,也不要手动传证书文件;
- 几分钟后状态变「已生效」,浏览器警告自动消失(手机若还报,刷新或清一下站点数据)。
- 验证方法(抓取服务器真实下发的证书):
```bash
# 看 subject 是不是你的域名
openssl s_client -connect shaohua-lab.top:443 -servername shaohua-lab.top
# 或 PowerShell 抓 RemoteCertificate.Subject
```
签发前 CN=*.cdn.myqcloud.com、签发后 CN=shaohua-lab.top(TrustAsia DV CA)。
- 教训:证书和备案是两回事(见 2.3)——不用额外交钱、不用等审核,免费 DV 证书几分钟搞定,只是需要你去控制台点一下"申请"。
#坑 6:找不到「验证」按钮 / 控制台入口 404
- 现象:归属权验证页面找不到"验证"按钮;后来连
cloud.tencent.com/edgeone都打不开(404)。 - 根因:
- 验证按钮在页面最底部(步骤 3 的正下方),不滚动看不到;
cloud.tencent.com/edgeone是产品介绍页,控制台是console.cloud.tencent.com/edgeone——两者混淆;且控制台入口随版本更新位置会变("自定义域名"可能在"域名管理"里)。- 解决:
- 找回入口第一招:浏览器历史记录搜
edgeone(你访问过,一定在记录里); - 标准入口:登录 console.cloud.tencent.com → 搜索"EdgeOne" → Pages → my-blog → 自定义域名/域名管理;
- 兜底:换浏览器 / 隐身窗口重试,排除缓存干扰。
- 教训:控制台操作先认准"console"开头的地址;页面长时间找不到,用历史记录兜底。
#坑 7:本机 curl 报 "Could not resolve host",但公共 DNS 明明是好的
- 现象:公共 DNS(8.8.8.8 / 223.5.5.5)都已返回 IP,本机 curl 却解析失败;在改 CNAME 之前本地残留了旧结果。
- 根因:Windows 本地 DNS 负缓存(NXDONMAIN 也会被缓存)。
- 解决:
```bash
ipconfig /flushdns
```
- 教训:排查"明明生效了却打不开"时,先清本地缓存再测。
#坑 8:上传 zip 报「文件名称包含非法字符」
- 现象:部署包上传 EdgeOne Pages 报「文件名称包含非法字符(\ / : * ? " < > | )」;文件名本身纯 ASCII、用文件选择器选择仍然报错。
- 根因:Windows
Compress-Archive(PowerShell/右键压缩)在 zip 内部用反斜杠\分隔路径;EdgeOne 校验时把\判为非法。判断方法:.NET ZipFile打开包看条目名——api\posts.json是反斜杠问题包,api/posts.json才是合规包。 - 解决:改用本仓库
pack-dist.ps1(.NET 手工建条目、强制正斜杠)打包,一键入口发布打包.bat;压缩前先自行核验条目分隔符。 - 教训:向 Web 平台传 zip 前,先确认压缩工具生成的是正斜杠路径;报错时检查 zip 内部条目,而非文件名本身。
#六、费用总结与长期运维
#6.1 花费清单
| 项目 | 费用 | 说明 |
|---|---|---|
| 域名 shaohua-lab.top | 首年 14 元,续费约 34 元/年 | 唯一硬性开销 |
| EdgeOne Pages 托管 | 免费 | 个人博客流量在免费额度内 |
| SSL 证书 | 免费 | EdgeOne 自动签发 DV 证书,到期自动续(本次签至 2026-12-01) |
| DNS 解析 | 免费 | 腾讯云自带 |
结论:一年总成本约 14~34 元,性价比极高。
#6.2 日常维护流程(写文章 → 上线)
bash# 1. 本地写文章:在 posts/ 新建 xxx.md(front matter 必填)
# 2. 本地预览:node server.js → http://localhost:8766
# 3. 静态化重建:
node build-static.js # 重新生成 dist/
# 4. 重新打 zip(或用 dist/ 目录直接上传)
# 5. EdgeOne Pages → my-blog → 上传新产物 → 部署
部署是全量覆盖式的:每次上传整套 dist。文件名带版本号(css/js 已带 v3/v2)可避免浏览器缓存旧版。
#6.3 备份与换机
- 一键打包:双击
迁移打包.bat→ 生成「博客迁移包.zip」(含全部文章、知识库、脚本); - 换机三步:拷包 → 新机解压 → 装 Node 双击
start-server.bat; - 部署相关凭证(腾讯云账号/实名模板)与代码分开保管。
#6.4 未来可选项
- www 前缀:在解析里加一条
www → CNAME → 同目标地址,www 也能访问(EdgeOne 会给 www 同样签发证书); - 更短域名:
.top首年促销常有,续费有波动,若以后预算上来了可考虑换.com; - 大陆节点加速:若流量变大需要大陆节点专属能力,届时再评估 ICP 备案(见 2.3)。
#七、避坑速查表(一页版)
| 现象 | 根因 | 一句解决 |
|---|---|---|
| 提示"请输入正确格式的域名" | 粘贴内容带隐形杂质/多前缀 | 干净字符串整串复制,检查首尾 |
| TXT 提示 24~48 小时生效 | 免责声明 | 直接 nslookup 公共 DNS,1 分钟即生效 |
| 填了 CNAME 还是 NXDOMAIN | 记录值少了域名前缀 | 整串照抄 EdgeOne 给的值,先 nslookup 验证 |
| 部署后时好时坏 | 边缘节点逐台同步 | 等 10~30 分钟收敛,定向 --resolve 验证 |
| 全设备证书警告 | 证书未签发,下发兜底证书 | 域名管理 → 申请免费 DV 证书(0 元) |
| 找不到验证按钮/控制台 | 页面太长/产品页与控制台混淆 | 历史记录找回 + console 开头的地址 |
| 本地解析失败但线上正常 | Windows DNS 负缓存 | ipconfig /flushdns |
#八、结语
从"请输入正确格式的域名"开始,到全球四个公共 DNS 全绿、双节点证书验证通过,前后经历:格式排查 → TXT 验证 → CNAME 纠偏 → 节点收敛 → 证书签发 → HSTS 加固。最贵的学费是 CNAME 那一下——永远用"目标地址能不能解析"来检验配置,而不是凭惯性猜。
现在这台小站:每年 14~34 元的成本、免费证书自动续签、全球边缘节点加速,静静地服务着来查 STM32/ESP32 驱动资料的朋友们。希望这份实录让你的上线之路少绕几个弯。🛰️
#九、更新日志
| 日期 | 类型 | 更新内容 |
|---|---|---|
| 2026-09-02 | 新增 | 首次发布 |
| 2026-09-03 | 新增 | 文末新增「更新日志」记录区(首次发布补记) |
| 2026-09-09 | 新增 | 「五、踩坑全记录」补充坑 8:上传 zip 报「文件名称包含非法字符」的根因(zip 内部反斜杠路径)与正斜杠打包方案 |