1.2 选型对比:自建 Nginx vs 网站托管

1.1 节算的是“运维时间账”,这节算的是“工程账”:同一个 Vue 静态创业页,自建 Nginx 和网站托管两条路,在部署流程、可靠性、扩展性、学习曲线上分别是什么体验。我不预设结论——如果你的项目里有动态接口、需要长驻进程,自建服务器仍是合理选择;但如果只是静态站,这节的对照表应该能帮你省掉半年的弯路。

顺便说一句我们做这个决定的时间点:产品 Demo 刚做完、还没上线。选型最好发生在投入大量基础设施之前,否则沉没成本会绑架技术决策。我见过太多团队“先上线再说”,结果服务器路线跑了两年,每次想迁都被历史包袱劝退。这也是为什么我把这一篇放在全书最前面,而不是讲完怎么做再补一节选型。

1.2.1 先把两条路线定义清楚

路线 A:自建 Nginx。 买一台云服务器(或轻量应用服务器),装系统、装 nginx、配 HTTPS、配防火墙,把构建产物 rsync/scp 上去,后期自己处理证书续期、日志、备份、扩容。可参考 轻量应用服务器建站实战 的完整流程。

路线 B:网站托管。 在腾讯云网站托管 CloudPages这类平台上开一个环境,把 dist 目录传上去(CLI、控制台或 git 触发),平台负责存储、分发、HTTPS、防护。背后的存储是 COS 这类对象存储,分发走 CDN,但这些都藏在平台后面,你感知到的是“传文件、得网址”。

选路线的正确姿势是先问业务形态,再问技术偏好。静态站选托管不是妥协,而是把有限人力投在内容与产品上;选服务器也不是落后,而是你的场景确实需要那层控制。最怕的是反向选择:明明是静态站,为了“显得专业”去租服务器,然后花一年时间当业余运维。

1.2.2 八项对照打分

是我们团队当年做选型时拍在桌上的那张表,分数是我们自己的体感,你的场景可以重新加权:

维度 自建 Nginx 网站托管 胜出
首次上线耗时 2~4 小时(含证书排查) 10~20 分钟 托管
部署一次的步骤 构建+上传+reload+验证 构建+上传 托管
HTTPS 配置 自己申请、续期 一键开启、自动续期 托管
抗突发流量 取决于带宽,超了直接卡 CDN 节点分担,天然抗 托管
故障半径 一台机器全挂,站全没 平台级故障才影响你 托管
可定制性 任意改 nginx.conf 只能用平台提供的配置 自建
长驻进程/动态接口 直接支持 需配云函数,见 4.2 自建
月成本(小流量) 服务器固定费起步 按量,低到可忽略 托管

八项里托管赢五项,但自建赢的那三项“可定制、动态接口、长驻进程”恰恰是某些项目的硬需求。我给身边人的判断标准只有一句话:你的站是否需要自己在服务器上跑一个不能停的进程。 需要,选服务器路线;不需要,别犹豫。

补充一个细节:这张表我们是在 2025 年做的,云产品的形态变化很快,打分时建议对照最新官方文档复核一遍每一格——比如 腾讯云网站托管文档 里对自定义配置项的支持范围,每年都在变宽,当年我们觉得不能配置的东西,现在可能已经有入口了。选型表应该是活的文档,而不是刻在石头上的结论。

1.2.3 托管平台背后到底替你做了什么

嘴上说“黑盒”容易,但作为工程师还是值得知道盒子里装的什么。我们按下 F12 看了一次部署后的网络请求,再对照官方文档画出三层结构:

用户请求 → CDN 边缘节点(缓存命中直接返回)
                ↓ 未命中
          对象存储 COS(存的正是你上传的 dist 文件)

最上面一层 CDN 负责把文件推到离用户近的地方,CDN 的缓存策略与刷新动作在 4.1 CDN 接入 会深入讲;中间存储层就是 COS,3.1 存储桶开通 会看到它怎么和托管环境衔接。对静态站来说这套链路足够简单,复杂度都被平台收走了,你只需对两样东西负责:传上去的文件内容,以及告诉平台的缓存规则。

这也是为什么托管平台计费项往往拆成“存储费+流量费”——费用模型正好对应这两层,1.3 节的成本模型就是照这个拆法做的。理解了三层结构,后面出现任何缓存、404、费用异常,你都能定位到是哪一层的问题,而不是对着控制台一脸茫然。

1.2.4 部署链路长什么样

光看分数不够具体,把两次发布的链路画出来对比。自建 Nginx 的链路有六个环节:

本地构建 → 网络上传 → 服务器文件系统 → nginx 静态服务
        → TLS 终止 → 公网用户

六个环节里任何一个坏了都表现为“站打不开”,排查时要逐段验证:是 rsync 传错了?nginx reload 失败?证书过期?端口被防火墙拦?当年我遇到过一次 nginx 配置里 root 指错目录,curl 本机 200、外网 404,查了两小时才发现是 server 块匹配冲突。

托管平台的链路表面上只有两端:

本地构建 → 上传到托管环境 → 用户访问

中间的存储、分发、HTTPS 都被平台收进黑盒。代价是“黑盒里面出问题时你只能等”,但换来的是六个环节的故障模式被平台的专业团队预防而不是靠你临时排查。

再补一个视角对比:两条路线的“升级体验”。服务器上想加个 gzip 压缩,要登录机器改配置再 reload,改错了整站不可用;托管平台上压不压缩往往是一个开关或构建时的一个选项,错了大不了重新传一次,影响面被锁在文件层。抽象层越高,单个操作的爆炸半径越小,这是我在两条线都跑过之后最深的体感。

1.2.5 什么情况我会回退到自建

我不是托管的宗教信徒,这三种场景我会认真考虑回到服务器路线,也写进了我们团队的备选预案:

第一,需要 Server-Sent Events 或 WebSocket 长连接。静态托管天生是短连接的文件分发,强行长连接体验会很糟;这时要么自建,要么让有长连接能力的服务兜底。

第二,有重度的动态接口且不想拆服务。静态站的动态能力可以交给云函数(4.2 云函数补充:表单与留言后端 会讲怎么做),但如果是已有的一套 Express 服务整体迁移,自建服务器反而省事。

第三,对成本极度敏感且流量稳定。服务器包月在大流量静态文件分发场景下可能比 CDN 流量费便宜——但前提是你能接受自己搞定高可用。这条判断在 1.3 费用与免费额度 里有详细的账单模型,别凭感觉选。

1.2.6 选了托管仍要懂的三件事

托管是“外包了运维”,不是“豁免了知识”。有基础在,平台抽风时你才诊断得了:

  • HTTP 缓存语义。 平台的缓存策略最终落在 Cache-Control、ETag 这些响应头上,看不懂响应头就不知道用户为什么看不到新版。
  • DNS 解析链路。 “域名解析生效了但站还是 404”这种问题,八成是解析记录与平台配置对不上,需要会 dig 一下。
  • 构建产物的路径问题。 静态站最常见的白屏原因就是资源路径,跟用不用托管无关,是基本功。

顺带一提,云厂商的控制台文档质量参差,看不懂对照台术语很正常。我们团队的窍门是出问题先看云监控的图表再看文档:图表告诉你“发生了什么”,文档告诉你“该怎么配”,两者一对,通常三分钟就能定位是哪一层的问题。

这三点在第三篇和第四篇都有实操章节,配合 腾讯云 CDN 文档 对照着看更清楚。

1.2.7 我们团队最后的决定

静态创业页主体走托管,动态的表单提交与留言用云函数补,CI 用 git push 自动部署。这个组合在这本书里贯穿始终,也是我个人认为小团队静态产品性价比最高的结构。选型的意义不是选个“最好”的方案,而是选一个每个环节你都镇得住、出问题知道找谁的方案。做选型时把这张表打印贴墙上,每个月回看一次有没有哪格变了——云产品形态迭代很快,半年前的劣势项可能已经有了平台级解决方案。

小结

两条路线没有绝对优劣,只有匹配度:要长驻进程就上服务器,纯静态就托管。托管赢在首次上线速度、HTTPS、抗流量的开箱即用,输在可定制性和黑盒化。选完路线,下一个现实问题就是钱:1.3 费用与免费额度:一年花多少 用真实账单模型接着算。

延伸阅读