一、先算账:搭一个网页每月到底要花多少钱

很多人算 VPS 的账时只盯着机器价格,结果买完才发现流量超额、带宽不够、内存吃紧。 搭建一个网页的成本结构其实很清晰,可以拆成三笔:机器月费、域名年费、以及流量与带宽的隐含成本。前两笔是明码标价,第三笔藏在配置表里,不换算出来就永远不知道自己买贵了还是买便宜了。
先把单位成本算出来。 我们用的判断指标有三个:每 GB 内存多少钱、每 GB 硬盘多少钱、每 TB 流量多少钱。这三个数字把不同档位、不同计费周期、不同币种的机型拉到同一把尺子上比。以下单价全部来自本站商品库当前快照(数据时间 2026-11-06 16:30),年付机型已折算成月价对比:
| 机型 | 折合月价 | 内存 | 硬盘 | 月流量 | 每 GB 内存 | 每 GB 硬盘 | 每 TB 流量 |
|---|---|---|---|---|---|---|---|
| RosCloud-01 | 19.99 美元 | 1 GB | 20 GB | 1024 GB | 19.99 美元 | 1.00 美元 | 19.99 美元 |
| RosCloud-02 | 29.99 美元 | 2 GB | 40 GB | 2048 GB | 14.99 美元 | 0.75 美元 | 14.99 美元 |
| RosCloud-03 | 39.99 美元 | 4 GB | 80 GB | 3072 GB | 10.00 美元 | 0.50 美元 | 13.33 美元 |
| RosCloud-04 | 49.99 美元 | 8 GB | 160 GB | 4096 GB | 6.25 美元 | 0.31 美元 | 12.50 美元 |
| RosCloud-05 | 59.99 美元 | 16 GB | 240 GB | 5120 GB | 3.75 美元 | 0.25 美元 | 12.00 美元 |
| RosCloud-06 | 69.99 美元 | 24 GB | 320 GB | 6144 GB | 2.92 美元 | 0.22 美元 | 11.67 美元 |
| LAX-STARTER | 16.67 美元 | 2 GB | 40 GB | 5000 GB | 8.33 美元 | 0.42 美元 | 3.41 美元 |
| LAX-MICRO | 33.33 美元 | 4 GB | 80 GB | 10000 GB | 8.33 美元 | 0.42 美元 | 3.41 美元 |
| LAX-MEDIUM | 66.67 美元 | 8 GB | 160 GB | 20000 GB | 8.33 美元 | 0.42 美元 | 3.41 美元 |
| LAX-LARGE | 133.33 美元 | 16 GB | 320 GB | 40000 GB | 8.33 美元 | 0.42 美元 | 3.41 美元 |
| LAX-Storage-1TB | 58.33 美元 | 8 GB | 1000 GB | 15000 GB | 7.29 美元 | 0.06 美元 | 3.98 美元 |
这张表里藏着三条很实用的规律。
第一条:同一条产品线里,档位越大单价越低。 RosCloud 系列从 01 到 06,每 GB 内存的单价从 19.99 美元一路降到 2.92 美元,降幅超过八成。这说明如果你已经确定要买,就别买最小那档凑合——最小档只适合试水和一次性任务,对于要长期跑的网站,它的单位成本是全系列最差的。同样的道理在硬盘上更夸张:LAX-Storage-1TB 每 GB 硬盘只要 0.06 美元,是 LAX-MEDIUM 那个 0.42 美元的七分之一,而两者的流量单价几乎一样(3.98 对 3.41)。如果你的站点要放图片、文档、素材包,直接看存储型机型,比硬塞进标准型划算得多。
第二条:年付机型的流量单价低得离谱,但有前置条件。 LAX 系列全部是 2000 到 10000 Mbps 带宽、5000 到 40000 GB 月流量,每 TB 流量只要 3.41 美元;而月付的 RosCloud 系列每 TB 流量在 12 到 20 美元之间。差了将近四倍。 原因很直白:年付摊薄了固定成本,且这些机型的流量配额本身给得大。但年付意味着你要一次性付清一年的钱,一旦方向选错、机房位置不合适、线路不符合预期,沉没成本就是你一整年的预算。 所以这个便宜是有条件的,条件在第三节展开。
第三条:带宽和流量是两笔不同的账,很多人只算流量。 500 Mbps 换算下来是 62.5 MB/s,1000 Mbps 是 125 MB/s,2000 Mbps 是 250 MB/s,4000 Mbps 是 500 MB/s,10000 Mbps 是 1250 MB/s。用 1 MB 文件除一下传输时间:500 Mbps 传完需要 0.016 秒,1000 Mbps 是 0.008 秒,10000 Mbps 是 0.0008 秒。注意这里的结论:只要你的访问量不构成持续大带宽占用,几百兆带宽在网页场景里早就不构成瓶颈了。 真正会卡住你的是并发连接数过多时的排队,而不是峰值带宽数字。一个每天一万次访问的个人博客,1000 Mbps 和 200 Mbps 的实际体感差别很小;但一个做图片站或者文件下载的站点,流量配额才是那道墙。
再看人民币计价的那条线。 云途的机型按月计价并直接标人民币,配额普遍更大,带宽在 1000 到 2000 Mbps,超额流量有明确的重置价:
| 机型 | 月费 | 内存 | 硬盘 | 月流量 | 带宽 | 每 GB 内存 | 每 GB 硬盘 | 每 TB 流量 | 超额重置价 |
|---|---|---|---|---|---|---|---|---|---|
| 云途 HK.DS.M | 350 元 | 32 GB | 480 GB | 10000 GB | 1000 Mbps | 10.94 元 | 0.73 元 | 35.84 元 | 200 元/TB |
| 云途 DS.ES.F | 399 元 | 32 GB | 800 GB | 10000 GB | 1000 Mbps | 12.47 元 | 0.50 元 | 40.86 元 | 200 元/TB |
| 云途 DS.ES.C | 700 元 | 64 GB | 800 GB | 40000 GB | 2000 Mbps | 10.94 元 | 0.88 元 | 17.92 元 | 500 元/TB |
| 云途 HK.DS.P | 750 元 | 64 GB | 1024 GB | 40000 GB | 2000 Mbps | 11.72 元 | 0.73 元 | 19.20 元 | 500 元/TB |
| 云途 HK.DS.S | 800 元 | 128 GB | 6000 GB | 40000 GB | 2000 Mbps | 6.25 元 | 0.13 元 | 20.48 元 | 500 元/TB |
| 云途 DS.ES.A | 800 元 | 32 GB | 800 GB | 40000 GB | 2000 Mbps | 25.00 元 | 1.00 元 | 20.48 元 | 500 元/TB |
| 云途 DS.ES.D | 900 元 | 128 GB | 800 GB | 40000 GB | 2000 Mbps | 7.03 元 | 1.13 元 | 23.04 元 | 500 元/TB |
| 云途 HK.DS.B | 1200 元 | 128 GB | 2000 GB | 40000 GB | 1000 Mbps | 9.38 元 | 0.60 元 | 30.72 元 | 500 元/TB |
| 云途 DS.ES.B | 1500 元 | 256 GB | 1920 GB | 30000 GB | 2000 Mbps | 5.86 元 | 0.78 元 | 51.20 元 | 450 元/TB |
云途这条线的特点是「内存单价低、流量单价高」。 DS.ES.B 每 GB 内存只要 5.86 元,是整张表里内存性价比最高的,但它每 TB 流量要 51.20 元,是云途 HK.DS.M 的 35.84 元的近 1.5 倍。反过来,HK.DS.S 用 800 元拿到 128 GB 内存和 6000 GB 硬盘,硬盘单价只有 0.13 元,是所有机型里的大容量方案,但注意它的磁盘类型在商品库里标注为 SAS HDD 而不是 SSD。 这个差别在搭建网页时是有实际影响的——读写密集型的小页面(数据库查询、动态渲染)用 SAS HDD 会明显更慢,而纯静态分发则无所谓。
把账算到一个具体的网页上。 假设你要搭的是一个带图片的产品展示站,页面平均体积 1.2 MB(含首屏图片、样式和脚本),月访问量 5000 次。需要的下行流量是 5000 乘 1.2 MB 等于 6000 MB,约合 5.86 GB。 拿这个数去对照配额,RosCloud-01 的 1024 GB 流量配额是它的 174 倍,LAX-STARTER 的 5000 GB 是它的 853 倍。换句话说:月访问 5000 次的站点,流量配额根本不是瓶颈,瓶颈在于内存够不够跑起你的程序。 再往上推:如果月访问量是 5 万次、页面 1.2 MB,流量需求是 60 GB,同样还是低配机型的配额内;真到流量成为瓶颈,是月访问量进入百万级、或者页面体积超过 5 MB 的视频和素材站。
这就是全篇最重要的一句算账结论:搭建网页这件事,钱基本都花在 CPU、内存和硬盘上,流量配额对绝大多数中小站点来说都是过剩的。 所以选机器时不要被流量数字牵着走,应该优先对齐内存和硬盘,再回头确认流量配额留了两倍以上余量。域名年费相对于机器费是小头,具体以注册局当日价格为准;证书用免费公开证书的话是零成本。
二、买机器之前必须先定下来的三件事

上面那张表能算出单价,但算不出「哪一档适合你」,因为决定答案的三个变量在商品库里查不到,只能你自己定。 很多人在这一步跳过,结果机器买回来才发现用不上,退不掉也换不了。
第一件事:你的访问者主要在哪个国家或地区。 这一条直接决定机房位置,而机房位置是唯一一项买完就不能改的硬件事实。商品库里的机型名称其实已经把位置写清楚了:LAX 系列在洛杉矶,IRVINE-PRO 系列在加州尔湾,Residential 系列主打住宅 IP,HK.DS 系列在香港,DS.ES 系列是欧洲方向,RosCloud 系列在商品库标签里标注的是俄罗斯。你从中国大陆访问美国西海岸,光纤物理往返的极限延迟就在 140 毫秒上下,这个数字是物理规律,不是商家能优化的。 香港到大陆的物理往返在 30 到 50 毫秒量级,差距是三到四倍。所以访问者在国内且要求页面秒开,就不要买美西机型的年付套餐,那是把钱和延迟一起锁死。
第二件事:这个域名需不需要在境内做 ICP 备案。 这是搭网页最容易忽略的合规问题。用境内服务器托管的域名,网站对外提供服务前必须完成 ICP 备案,这是接入商的要求,不是选择问题。而用境外或港澳台服务器托管的网站,不走这个备案流程,开通即用。代价是速度和稳定性——境外主机没有境内 CDN 节点,回源链路长,晚高峰时段的表现波动会明显更大。如果你做的是面向国内用户的正式业务,备案是绕不开的前置条件;如果做的是个人项目、测试站、或者面向海外用户的站点,直接选境外机房更省事。 这两条路的机器单价差异也要算进去:不能备案就只能在境外选,而境外机型的流量单价和内存单价都会比人民币计价的境内方案贵一截。
第三件事:这个网页是纯静态、还是带后端动态渲染。 这个决定直接决定你最少需要多少内存。纯静态页面——纯 HTML 加 CSS 加少量 JavaScript,Nginx 就能跑起来,512 MB 内存的机器绰绰有余。带动态渲染——WordPress、Typecho、Node 或 PHP 应用、后台管理界面,1 GB 是起点,主要消耗在 PHP-FPM 或 Node 进程池上。带数据库再加一个服务(比如 MySQL 加 Redis,或者 Node 加 MongoDB),2 GB 内存开始才不狼狈。按上面那张单价表换算,在 RosCloud 线上,静态站用 01 档是 19.99 美元,动态站用 02 档是 29.99 美元,两者每 GB 内存单价从 19.99 美元降到 14.99 美元;再往上到 03 档,单价降到 10.00 美元。 换句话说,如果你的站点确定要跑动态程序,直接从 2 GB 起步比从 1 GB 起步更省钱,因为 1 GB 那档的单位成本反而最高。
这三个变量定完之后,机器选择就基本是解方程了。 这里要特别强调一点:这三个变量的优先级不是并列的。机房位置错了,配置再高也没用;备案需求错了,选什么机器都白搭;只有在前两件确认无误之后,配置档位才是最后那个可调的旋钮。很多人在这一步本末倒置,先挑了个「配置高、价格便宜」的机器,上线才发现根本没法备案或者延迟高得没法用。
还有一个容易忽略的第四项:IP 资源的类型和数量。 商品库里有明确的字段记录这些事实。RosCloud 全系列标注 ipv4_count 为 1,也就是每台机器带一个独立 IPv4,可以直接绑域名、不需要端口转发。云途的机型在 IP 描述里写的是 IPv4,但注明「原页未注明具体数量」。sixtynet 的 Residential 系列在渠道说明里明确主打住宅 IP。这三者的差别在具体的业务上非常致命:如果你要做的是爬虫、需要绕过地理限制、或者要避免被识别为机房 IP,那就必须看 Residential 这一类;如果你只是给公司做个官网,普通 IPv4 就够了;如果你打算在服务器上直接跑多个站点或者做端口转发,独立 IPv4 是硬门槛,共享 IP 加端口映射的机器在绑定域名和配置反向代理时会遇到一堆预料之外的麻烦。 买之前把这一条确认清楚,比省十美元的月费重要得多。
三、按访问量倒推配置:算式和结果都在这里

把访问量变成配置,中间只有一个公式:月访问量乘以单页体积,必须小于月流量配额的三分之一。 为什么是三分之一而不是全部?因为流量配额是月度重置的,你不可能把一个月的额度在一天里用光;留出三倍余量意味着即使有一波突发流量、或者流量统计口径和你的估算有偏差,也不会被限速或停机。
先看单页体积怎么估。 纯静态展示页,包含一张主图、少量样式,压缩后大约 0.3 MB。带图的产品站或者博客,1.2 MB 是比较真实的估算值。带视频、轮播、大量图片的落地页,可能到 3 MB 以上。这个数字你其实自己就能测:把本地页面所有资源加起来,或者用浏览器的网络面板看一次完整的加载。 很多人在这一步凭感觉估 500 KB,结果上线后发现实际的图片全没压缩,一个页面拉了 4 MB。
然后按这个公式把常见访问量对应到具体机型:
| 月访问量 | 单页体积 | 月流量需求 | 建议内存 | 建议硬盘 | 流量配额的 3 倍余量 | 商品库里对得上的机型 |
|---|---|---|---|---|---|---|
| 5000 次 | 0.3 MB | 1.46 GB | 1 GB | 20 GB | 4.4 GB | RosCloud-01(1024 GB 流量) |
| 5000 次 | 1.2 MB | 5.86 GB | 2 GB | 40 GB | 17.6 GB | RosCloud-02(2048 GB 流量) |
| 5 万次 | 1.2 MB | 58.6 GB | 2 GB | 40 GB | 176 GB | RosCloud-03(3072 GB 流量) |
| 20 万次 | 1.2 MB | 234 GB | 4 GB | 80 GB | 703 GB | RosCloud-04(4096 GB 流量) |
| 50 万次 | 1.2 MB | 586 GB | 4 GB | 80 GB | 1758 GB | LAX-MICRO(10000 GB 流量) |
| 100 万次 | 1.2 MB | 1172 GB | 8 GB | 160 GB | 3516 GB | LAX-MEDIUM(20000 GB 流量) |
| 300 万次 | 1.2 MB | 3516 GB | 8 GB | 160 GB | 10547 GB | LAX-LARGE(40000 GB 流量) |
看这张表你会发现一件反直觉的事:月访问 5 万次和月访问 5000 次,流量配额的差别是十倍,但内存需求可能只差一档。 因为流量配额的基数本来就给得很大,而内存是线性消耗的。所以「我的站访问量不大,买个便宜的就行」这个判断只在纯静态站成立;一旦是动态站,内存才是真正随业务量增长的部分。
再把月成本算出来。 月访问 5 万次的动态站,用 RosCloud-03 是 39.99 美元,折合每 GB 内存 10.00 美元、每 TB 流量 13.33 美元。换个算法更有参考价值:把月成本除以月访问量,得到「每次访问摊到多少服务器成本」。 39.99 美元除以 5 万次是每次 0.0008 美元,也就是每次访问的服务器成本不到 0.1 美分。月访问 100 万次用 LAX-MEDIUM 是 66.67 美元折合月价,每次访问成本 0.000067 美元,比前者还低一个数量级——因为流量单价低。
这个结论会改变很多人的下单冲动:服务器成本在绝大多数网站的总成本里是小数点后两位的事。 一个真实的内容站,真正的成本大头是内容生产、推广和域名续费,服务器费可能只占百分之几。因此选机器时不要在「能不能再省十美元」上纠结,而要保证三件事:机房位置对、备案路径通、内存够。 剩下的钱省下来意义不大。
但有一个例外必须单独说:如果你打算做的是图片站、素材下载站、或者任何「单页体积大」的业务,那流量配额会瞬间变成主角。 假设页面体积是 5 MB,月访问 10 万次,流量需求就是 500 GB。这时候 1 TB 硬盘、10000 GB 流量的 LAX-Storage-500G 那种存储型机型就比标准型更合适——它每 GB 硬盘只要 0.07 美元,500 GB 硬盘配 10000 GB 流量,流量单价 3.41 美元。反过来,如果你只放文字内容、不放图片视频,硬盘容量对你毫无意义,多买 1 TB 硬盘不如把同样的钱花在内存上。
内存到底要多少,还有一个更实用的判断方法:装完之后看谷值。 第四节和第八节会给出具体命令和数字,但判断标准先说在前面:网站稳定运行 24 小时之后,空闲内存(free 命令的 available 那行,或者 free -m 输出的空闲加上缓存)应当稳定保持在总内存的 15% 以上。 如果长期低于这个数,说明内存买小了;如果长期高于 60%,说明买大了,可以往下调一档省成本。这个数字是判断配置是否刚刚好的最硬指标,比任何「几核几 G 够用」的经验说法都可靠。
四、从付款到第一次登录:完整命令和三个最常撞的报错

机器到位后第一件事是拿到三样东西:公网 IP、登录用户名、登录密码。 大多数商家会把这三项发到你的邮箱或者工单里,付款完成后如果没收到,直接在商家后台的工单系统里问,不要自己瞎试——试错太多次有可能触发风控,把 IP 段拉黑。
拿到 IP 之后,第一次连接用这条命令:
ssh root@你的公网IP
第一次连接会问一个是否信任对方密钥的问题,输入 yes 回车即可。 之后系统会把对方的主机密钥写进 ~/.ssh/known_hosts 文件,下次连接就不会再问。注意,如果你之前用过这台 IP 的旧机器(比如 IP 被回收重装),known_hosts 里会留着过期的密钥,这时会报 Host key verification failed。 解决办法是先把旧记录删掉:
ssh-keygen -R 你的公网IP
删完重新连接即可。 这个报错本身不是问题,但它背后有个更重要的提醒:商品库里很多是共享 IP 加端口转发的低价机型,商家会把机器回收再分配给别人。 所以每次重装系统后,第一件事是重新生成主机密钥,别偷懒用旧密钥,否则会出现「我明明换了机器,怎么还是老样子」的错觉。
第二个高频报错是 Connection timed out 或者 No route to host。 这说明网络层面根本不通,密码还没轮到输。按这个顺序排查:第一,检查你本地网络能不能 ping 通那个 IP,ping 不通不一定有问题(很多机房禁 ICMP),但如果连 SSH 端口都连不上就是真问题了。第二,检查本地防火墙和公司网络的出站策略,22 端口或商家指定的高位端口可能被拦。第三,如果你的商家提供了控制面板里的「重启」或「重装系统」功能,直接在面板里看一眼机器状态,很多「连不上」其实是机器还在初始化或者上一次重装没跑完。第四,如果你换了一台机器但 IP 段之前被你自己做过扫描测试、端口测试,可能已经被商家的风控系统标记,换一台机器重试即可。
第三个高频报错是 Permission denied。 网络通了、密钥对上了,但认证失败。常见原因有三个:密码输错(注意区分大小写和数字 0 与字母 O);商家发货时禁用了密码登录只允许密钥登录;或者你用的是 root 登录,而商家设置的是禁止 root 直接登录、必须用一个普通用户加 sudo 提权。 这三个的排查办法一样:回到商家的交付邮件或工单说明里,确认「登录用户名」这一栏到底写的是什么,以及是否给了「密钥登录」的说明。很多商家现在默认交付的是一对密钥而不是密码,邮件里会给一个私钥文件或者一段私钥文本。
登录成功之后,按这个顺序做四件事,这四步的顺序不要乱:
# 第一步:更新系统包,避免已知漏洞和依赖问题
apt update && apt upgrade -y
# 第二步:设置时区,服务器默认 UTC,日志时间会看着很别扭
timedatectl set-timezone Asia/Shanghai
# 第三步:给 root 换一个新密码
passwd
# 第四步:装一个 htop 看资源占用情况,这是后面验收的观察窗口
apt install -y htop
这四步里第二步经常被跳过,但它的影响比想象的大。 服务器日志、Nginx 的访问日志、cron 任务记录的时间全部按系统时区写,时区不对的话你排查问题时会出现「日志上的时间比现在早了八小时」这种混乱,在故障复盘时特别费时间。
然后立刻把 SSH 的安全性补上,这一件事比装任何网站程序都优先。 修改端口、改用密钥登录、关闭 root 密码登录,三件事一起做:
# 编辑 SSH 配置
vi /etc/ssh/ssh_config
在配置里找到并修改这几项:
Port 你的高位端口
PermitRootLogin prohibit-password
PasswordAuthentication no
改完不要直接关掉当前 SSH 窗口,另开一个新终端测试能不能用密钥登进去,确认能登上了再关原来的窗口。 这个顺序能避免把自己锁在服务器外面——改完配置立刻断连、而新配置有误,只能走商家控制台的带外重置,那个流程通常要等商家回复工单,很耽误事。
最后补一条:给服务器配一个防火墙,只放行真正需要的端口。 搭建网页的场景通常只需要 22(或者你改过的高位端口)、80、443 三个。如果你还需要面板、数据库远程连接这些端口,加进来之前先想清楚是不是真的需要暴露到公网——很多面板面板被爆破就是从这一条来的。
五、Web 服务器选哪一个:Nginx、Apache、Caddy 的差别和用法

装完系统就该装 Web 服务器了。 这个环节的选择看起来是口味问题,实际上会影响你的内存占用、静态文件性能和后续维护成本。
Apache 是最老的方案,也是最省心的方案。 它自带 .htaccess 支持,改配置不用重启服务,适合配置不复杂的站点。它的代价是内存占用偏高,处理并发连接的方式是每个连接一个进程,在访问量涨起来之后容易成为瓶颈。对搭建网页这个场景来说,Apache 完全够用,但如果你后续打算做并发量稍高的业务,早点换 Nginx 会省事。
Nginx 是目前建站的主流选择,用的是事件驱动模型。 它的核心优势在于用少量进程就能扛住大量并发连接,内存占用比 Apache 明显更低。这一点对你的机器配置有直接影响:如果你买了一台 1 GB 内存的机器,Nginx 空载时能留出更多余量给数据库和 PHP-FPM 进程池。Nginx 还有个对建站很实用的能力——反向代理和负载均衡配置简单,后面要加 CDN 或者加一层缓存,用 Nginx 转发比改 Apache 规则清爽得多。
Caddy 是第三种选择,最大特点是自动 HTTPS。 它能自动申请和续期证书,配置文件里写一行就生效,不用像 Nginx 那样再装 certbot 配定时任务。如果你的站点只有一个域名、配置也不复杂,Caddy 是最省事的选择。 它的短板是内存占用比 Nginx 稍高,而且在中文网络环境里自动申请证书偶尔会卡住。
如果你拿不定主意,直接用 Nginx,这是最不会出错的选择。 安装很简单:
apt install -y nginx
systemctl enable nginx
systemctl start nginx
nginx -v
装完先确认它真的起来了:
systemctl status nginx --no-pager
curl -sI http://127.0.0.1 | head -3
正常的话会看到 HTTP/1.1 200 OK 和一段 Server 头。 如果 curl 没响应,去看错误日志:tail -50 /var/log/nginx/error.log,这一步能解决八成问题。
然后建一个站点配置。 在 Ubuntu 系上站点配置放在 /etc/nginx/sites-available/,启用时做软链到 sites-enabled/:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
client_max_body_size 32m;
}
这个配置里有四处值得单独说。 第一,root 指向的目录一定要存在并且权限正确,权限不对直接 403。第二,try_files $uri $uri/ =404 这行让 Nginx 先找静态文件,找不到再走 PHP,最后才返回 404,是建站的标准写法。 第三,client_max_body_size 决定上传文件的上限,默认值往往只有 1 MB,如果你要做后台上传或者表单提交,不改这一行就会报 413 Request Entity Too Large。第四,fastcgi_pass 后面那个 socket 路径必须和实际安装的 PHP 版本对上,这是 502 报错的头号原因。
改完配置必须先测试语法再重载:
nginx -t && systemctl reload nginx
nginx -t 这一步千万不能省。 直接 systemctl reload 时如果配置有语法错误,服务会拒绝重载,老配置继续跑;但如果你用的是 restart,服务可能直接起不来,网站全挂。养成先 -t 再 reload 的习惯,这一个动作能挡掉绝大多数配置事故。
如果你的站点需要 PHP,装完之后要确认三件事:PHP-FPM 服务是开机自启的、socket 路径和配置一致、PHP 版本和站点代码兼容。 查看已安装的 PHP 版本:
dpkg -l | grep php | grep -E "^ii"
ls /run/php/
第二行命令列出的目录名里那个版本号,就是你配置文件里 fastcgi_pass 后面该填的版本。 这就是 502 报错的排查入口。
六、给网页加 HTTPS:签发步骤、常见报错和回源配置

现在浏览器会对没有 HTTPS 的网站显示不安全提示,而且会影响搜索排名。 对搭建网页这个需求来说,HTTPS 不是加分项而是及格线。
用 Certbot 签发证书的流程是这样的:
# 安装 certbot 和 nginx 插件
apt install -y certbot python3-certbot-nginx
# 签发证书,把 example.com 换成你的域名
certbot --nginx -d example.com -d www.example.com
# 测试自动续期是否正常
certbot renew --dry-run
第二条命令是重点,一定要执行。 Certbot 默认会配置成每天检查一次续期,但这个定时任务是否真的在跑、--dry-run 能不能通过,需要你自己验证一次。证书过期导致的整站打不开,是建站之后最常见也最尴尬的事故。 如果 --dry-run 报错,通常是 80 端口没放行或者 DNS 还没生效。
第一个高频报错是 ACME 验证失败。 原因是 Certbot 需要通过 HTTP 访问 http://你的域名/.well-known/acme-challenge/ 这个路径来证明你控制这个域名。所以签发证书之前必须满足三个条件:域名解析已经生效、80 端口没有被占用、Nginx 能正常响应。 验证解析是否生效:
nslookup example.com
curl -sI http://example.com | head -3
如果 80 端口被别的进程占着(比如你之前装过 Apache 或者某个面板自带了 Web 服务),签发必然失败。 这时候要先停掉占用服务,或者改用 DNS 验证方式(certbot certonly --manual),手动在 DNS 服务商那边加一条 TXT 记录。
第二个高频报错是证书签好了但浏览器仍然提示不安全。 这通常是证书链不完整的问题——有些签发机构会签发包含中间证书的证书,如果服务器只放了叶子证书,浏览器在某些客户端上会报 NET::ERR_CERT_AUTHORITY_INVALID。Certbot 装出来的证书一般链是完整的,如果你用的是别的工具手动配置的,务必把中间证书拼接进去。
第三个问题是域名不匹配。 证书是给 example.com 签的,访问 www.example.com 就会报错。解决办法有两个:签发时把两个域名都写进去(就是上面命令里的两个 -d 参数),或者做一条 www 到主域名的跳转。
证书装好之后,在 Nginx 配置里加上 443 和强制跳转:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/example;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
这里有个容易踩的坑:ssl_certificate 必须指向 fullchain.pem(完整链),而不是 cert.pem(只有叶子证书)。 用错了本地测试可能正常,但外部浏览器访问会报错。
接下来是回源配置,这一步决定了你的站点在不同地区表现如何。
如果你用 Cloudflare 之类的 CDN,记得把源站的 443 端口放行,并且在 DNS 记录里打开那个橙色云朵的代理开关。 CDN 缓存的生效规则也要配对:静态资源设长缓存时间(比如 30 天),HTML 页面设短缓存或不缓存(几分钟)。 这个配反了会出现「我改了页面但访问还是旧内容」或者「每次访问都回源、CDN 白花钱」两种问题。
如果你不用 CDN,那就把静态资源优化做扎实:开启 gzip 压缩、给图片转成 WebP、给静态资源加长缓存头。 Nginx 的 gzip 配置:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml;
一个经验值:HTML 文本压缩后能降到原体积的 20% 到 30%,CSS 和 JS 压缩后能降到 40% 到 50%。 前面估算单页体积 1.2 MB 的时候,是按未压缩估算的,开了 gzip 之后实际下行流量会明显低于这个数——但这不改变「3 倍余量」这条规则,因为它本来就是安全边际。
七、把网页放上去:三种上传方式、目录权限和部署后必查项

服务器准备好了,页面还没上去。 怎么把本地文件传上去,取决于你改页面的频率。
第一种是 scp,适合一次性上传。 命令很简单:
scp -r ./dist/* root@你的公网IP:/var/www/example/
第二种是 rsync,适合反复同步,推荐用这个:
rsync -avz --delete ./dist/ root@你的公网IP:/var/www/example/
--delete 这个参数要特别小心:它会删除目标目录里源目录没有的文件。 用错了目录(尤其是路径写错成 /var/www),就是把整个站点目录清空。第一次用的时候加 --dry-run 先看一遍它打算做什么,确认无误再执行。
第三种是 git,适合有版本管理习惯的团队。 服务器上装 git,代码托管在 GitHub 或 GitLab,部署时拉取:
apt install -y git
git clone https://github.com/你的账号/你的仓库.git /var/www/example
这个方案多一个好处:每次部署天然有版本记录,出问题可以回滚到上一个 commit。 前提是你的站点是用构建工具生成的静态文件,用 git 直接拉源码是不行的——静态站点一般需要本地构建好再上传,所以如果你的工作流是「改源码 → 本地构建 → 传产物」,rsync 是最贴的。
传完之后,目录权限必须正确,这是 403 Forbidden 的头号原因。 Nginx 的工作进程默认以 www-data 用户运行,它需要能读你的文件、能写日志和临时目录:
# 目录:所有者可以是 root,其他用户有读和进入权限
chown -R root:root /var/www/example
# 目录需要 755,文件需要 644
find /var/www/example -type d -exec chmod 755 {} \;
find /var/www/example -type f -exec chmod 644 {} \;
上面第二条 find 命令的参数很重要:-type d 只改目录、-type f 只改文件,两个都要跑。 如果只改了文件权限没改目录,Nginx 依然无法进入目录,403 依旧。
如果站点需要 PHP,权限要求会更严格一点:静态文件保持 644,而 PHP 脚本和上传目录需要能被 PHP 进程写入。 典型做法是把上传目录单独开放写权限:
chown -R www-data:www-data /var/www/example/uploads
chmod -R 755 /var/www/example/uploads
不要图省事对整个站点目录执行 chmod -R 777。 这是最常见的错误做法——777 意味着任何进程都能改写你的文件,一个上传漏洞就能直接拿到站点目录的写权限。正确做法是精确到目录:只有需要写入的那一个目录给写权限,其他保持 755。
部署完成后,有四个地方必须逐个确认,不能只看首页能打开就完事:
第一,首页在浏览器里完整加载,不只是 HTML 出来而图片样式全丢。 样式丢失通常是 CSS 路径写错,或者 Nginx 没有正确处理静态资源目录。用 curl -sI http://example.com/style.css 单独确认一下。
第二,后台能登录并且能保存内容。 WordPress 这类程序在数据库权限不足时,首页正常但保存时报 500。
第三,表单能提交。 上传功能失败通常是 client_max_body_size 没改,或者 PHP 的 upload_max_filesize 和 post_max_size 还是默认值。
第四,手机上打开看看。 很多显示问题只在窄屏出现,桌面端完全看不出来。这一步花两分钟,能省掉上线后被同事问「手机上排版怎么乱了」的尴尬。
最后把部署脚本化。 每次上线手动敲十几条命令,既慢又容易漏。把 rsync、Nginx 重载、清理临时文件这几步写成一个 shell 脚本,放到服务器上,用 bash deploy.sh 一键执行。这一步不属于「搭建网页」的必需动作,但它是让站点能长期维护下去的分界线。
八、验收清单:上线前必须跑一遍的数字标准

页面能打开不等于网站能用。这一节给出的是一组可以照着测的验收标准,每个都是数字,不达标就修,不达标别上线。
第一个指标:首字节时间(TTFB),标准是稳定低于 300 毫秒。 测法:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s Total: %{time_total}s\n" https://example.com
连续跑五次,取中位数而不是单次值,单次值会被网络抖动带偏:
for i in 1 2 3 4 5; do curl -o /dev/null -s -w "%{time_starttransfer}\n" https://example.com; done
注意测 TTFB 要从国内网络发起,在服务器本机测没有意义——服务器本机到自己的延迟永远是 0 毫秒。如果测出来中位数超过 300 毫秒,先排查是不是机器在境外这个物理事实导致的,而不是先去改配置。 换机房是唯一有效的解法,改 Nginx 参数救不回来。
第二个指标:1 MB 静态资源下载耗时,标准是低于 2 秒。 测法:
curl -o /dev/null -s -w "size: %{size_download} bytes speed: %{speed_download} B/s\n" https://example.com/large-image.jpg
换算成更直观的说法:下载速度至少要达到 500 KB/s。 这个数字对应的是 4 Mbps 的实际可用带宽,远低于前面说的 500 Mbps 标称值——因为标称带宽是端口速率,单台机器独享时能跑到七八成就算正常,而跨洲链路实际只能跑到这个量级。 所以如果测出来 1 MB 要 5 秒,问题不在带宽,在链路。
第三个指标:内存谷值,标准是 15% 以上。 观察一整天的最低值,而不是当前值:
free -m
看 free 命令输出里的 available 那列。 如果 available 长期低于总内存的 15%,说明配置买小了,这个数字比「几个 G 够用」的经验判断可靠得多。更关键的是看谷值不是峰值——白天流量高峰时的内存占用不重要,凌晨没人访问时的内存占用才决定你这台机器会不会在某天因为一个碎片化问题直接 OOM。
第四个指标:磁盘使用率,标准是低于 70%。 留出三成余量是因为磁盘接近满的时候,写入会明显变慢,而且日志文件突然暴涨(日志切割失败、数据库异常)可能直接把磁盘写满导致整台机器挂掉。
df -h
第五个指标:HTTP 5xx 错误比例,标准是低于 0.1%。 查 Nginx 日志:
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
输出里 5xx 的总和除以总请求数如果超过千分之一,就该查日志找原因了。
第六个指标:CPU 使用率,标准是 30 分钟平均值低于 60%。 用 htop 或者:
top -bn1 | head -5
单核跑满意味着机器的 CPU 不够用,因为上面所有低延迟指标都建立在「有富余算力」这个前提上。
把这六个指标做成一张验收表,上线前逐项打勾:
| 验收项 | 通过标准 | 测量命令 | 不达标怎么处理 |
|---|---|---|---|
| 首字节时间 | 中位数 < 300 ms | curl -w "%{time_starttransfer}" 连测 5 次 |
排查物理距离与线路,必要时换机房 |
| 1 MB 下载耗时 | < 2 秒 | curl -w "%{speed_download}" |
检查带宽是否被共享限速 |
| 内存谷值 | available ≥ 总内存 15% | free -m 观察 24 小时 |
升一档内存或做进程瘦身 |
| 磁盘使用率 | < 70% | df -h |
清日志、加数据清理任务 |
| 5xx 错误率 | < 0.1% | awk 统计 access.log |
看错误日志定位是后端还是配置 |
| CPU 平均占用 | < 60% | top -bn1 |
加缓存(Redis)或静态化改造 |
| 证书有效期 | > 30 天 | certbot certificates |
修复 certbot renew --dry-run |
| 备份可恢复 | 能完整还原 | 实际执行一次还原 | 备份没验证过等于没有备份 |
最后一行值得单独说:没验证过的备份等于没有备份。 很多站点的备份脚本跑了半年从没还原过,等真出事的时候才发现备份文件是空的或者格式不对。每季度花十分钟把备份真的还原一次,这个动作的价值远大于再买一档内存。
九、四种情况下不该选 VPS,以及对应的替代做法

这一节是全文最需要你自己拿主意的部分。 下面四种情况,按机房位置、线路类型、计费方式、IP 资源这些公开事实判断,不涉及任何对商家的评价,每种都配一个可执行的替代方案。
第一种情况:你的访问者绝大多数在中国大陆,且对打开速度敏感。 判断依据是物理距离,不是配置。商品库里的机型位置写得很清楚——LAX 和 IRVINE-PRO 在美国加州,HK.DS 系列在香港,DS.ES 系列在欧洲方向,RosCloud 系列的标签是俄罗斯。从中国大陆到美国西海岸,光纤往返的物理延迟下限在 140 毫秒左右,这是不随任何配置变化的。 加上建站场景通常还会经过一跳或多跳转发,实际首字节时间落在 200 到 400 毫秒是常态。如果你的业务是内容站、电商或者需要用户停留的页面,这个延迟会实打实地影响跳出率。 替代方案有两个:一是把机器放在香港等物理距离更近的位置,看商品库里 HK.DS 系列;二是在服务器前面挂 CDN 静态层,把 HTML 之外的资源全部交给边缘节点回源,注意 CDN 只优化静态资源,加速不了后端动态渲染。
第二种情况:网站必须完成 ICP 备案才能面向境内提供服务。 依据是接入商的合规要求,备案对象是域名和服务内容,托管在境外的服务器无法完成境内备案流程。替代方案是改用境内机房或境内云主机。 按上面的表,云途这条线的内存单价在 5.86 到 25.00 元每 GB 区间,明显低于美元计价的 2.92 到 19.99 美元每 GB 加上汇兑成本后的水平——境内方案在单位成本上通常还有优势,而且备案本身会带来搜索引擎的收录优势。如果你的站点根本不需要备案也不面向境内用户,那这条就不成立,直接选境外机房更省事。
第三种情况:你只是一个单页的落地页、活动页或者个人简介页,不需要任何后端。 判断依据是功能需求而不是价格。这种情况下自建 VPS 属于用大炮打蚊子:你为 1 GB 内存、20 GB 硬盘和一台 7×24 运行的机器付费,换来的却是一个纯静态页面。替代方案是用静态托管服务,直接把构建产物推到对象存储加 CDN 上,成本按流量计、没有固定月费、没有运维负担。 但反过来,如果你的站点是动态的、需要后台管理、需要定时任务、需要数据库,那么静态托管完全帮不上忙,VPS 是唯一合理的选择——这条判断线的位置在第三节「单页体积怎么估」那里。
第四种情况:你的访问量波动极大,无法预测峰值,而且超出会被限速或停机。 判断依据是计费方式。商品库里的流量配额是月度的、固定的,而云途的机型在配额之外有明确的重置价:10000 GB 流量的档位是 200 元每 TB,40000 GB 流量的档位是 500 元每 TB,30000 GB 的那个档位是 450 元每 TB。 换算成每 TB 流量,10000 GB 档位的重置价折合 20.48 元,40000 GB 档位折合 12.80 元,30000 GB 档位折合 15.36 元。这意味着如果你选了小配额又碰上大促,超额部分的单价其实和你正常配额的单位成本是同一量级,不算隐形罚款,但也不是零成本。 而商品库里标 traffic_unlimited 为 false 的机型全都在列——目前这条产品线没有真正不限流量的选项。替代方案是:要么按峰值需求一次性买够大配额的档位(40000 GB 那档的重置单价明显更低),要么用弹性方案把静态部分拆到对象存储上,让弹性带宽只承担动态部分。
还有一条不属于「不该选」但同样要提醒的边界:需要住宅 IP 的场景。 商品库里的 IP 资源字段写得很明确——RosCloud 全系列是独立 IPv4 计数为 1,云途的机型标注的是普通 IPv4,只有 sixtynet 的 Residential 系列在渠道说明里明确主打住宅 IP。 如果你的业务涉及网络爬虫、需要绕过地理限制、或者需要避免被识别为机房 IP,那么其他机型在 IP 属性上就不满足要求,这时候看配置和价格都没有意义。替代方案是按业务需求去 Residential 系列里选,这一系列同样有 STARTER 到 LARGE 的完整档位,内存从 2 GB 到 16 GB,流量从 5000 GB 到 40000 GB,硬件配置和 LAX 系列是对应的,差别主要在 IP 属性上。
按你的情况,下一步该看哪家
上面讲的是判断标准,但多数人最后还是想问一句「那我该买谁」。按你的实际情况对照下面几条,直接去看对应的机型页比继续比价更快:
- 只想搭个站、预算优先:先看价格最低那档够不够用,别为用不上的配置付钱。看 iwebfusion 当前机型与价格
- 做跨境或店群、需要多 IP:优先看 IP 类型与换 IP 政策,别只看配置。看 racknerd 当前机型与价格
- 主要访客在国内、在意打开速度:先确认回程线路,再谈配置。看 cloudcone 当前机型与价格
- 只是开发测试、临时用:按小时或月付,用完就删,别买年付。看 digitalocean 当前机型与价格
价格与库存以商家页面当日显示为准,下单前建议先确认退款窗口与是否支持按月付费。
十、结论:按你的实际情况该选哪一档

前面九节讲的是标准和取舍,这一节给结论。分四类人,每一类都给出具体该买什么、为什么,以及验收时重点盯哪几个数字。
第一类:个人项目、学习练手、或者刚起步的小站,访问量在每月一万次以内,站点是静态的或者只有一个简单的动态页面。 直接选月付最低档,不要买年付。 按商品库报价,RosCloud-01 是每月 19.99 美元、1 GB 内存、20 GB 硬盘、1024 GB 流量、500 Mbps 带宽,这个配置跑一个静态站或者轻量动态站完全够用。这一类人买年付是最容易犯的错——省下的那点差价,换来的是一年内不能换机房的代价,而机房位置恰恰是你唯一无法后期修改的变量。验收重点只有两个:内存谷值(free 命令的 available 保持在 15% 以上)和磁盘使用率(低于 70%)。
第二类:有真实业务的中小站点,动态渲染加数据库加后台,月访问量在五万到二十万次,需要备案、面向大陆用户。 选境内机房,配置从 2 GB 内存起步。 按商品库报价,云途 DS.ES.C 是每月 700 元、64 GB 内存、800 GB 硬盘、40000 GB 流量、2000 Mbps 带宽,每 GB 内存 10.94 元、每 TB 流量 17.92 元;如果硬盘不够用、需要放大量素材,HK.DS.S 是每月 800 元、128 GB 内存、6000 GB 硬盘、40000 GB 流量,硬盘单价只有 0.13 元,但注意它的磁盘类型在商品库标注为 SAS HDD,动态渲染密集的站点要留意读写响应。这一类人的验收重点是首字节时间(要低于 300 毫秒)和 5xx 错误率(低于 0.1%),因为有真实业务,流量和错误率的波动直接影响收入。
第三类:面向海外用户、或者需要住宅 IP 的业务,站点要跑爬虫或者需要绕过地理限制。 走 Residential 系列,配置按并发量选。 Residential-STARTER 是每年 260 美元、2 GB 内存、40 GB 硬盘、5000 GB 流量、2000 Mbps 带宽,折合每月 21.67 美元,每 GB 内存 10.83 美元、每 TB 流量 4.44 美元;并发量大就往上走 Residential-MICRO(每年 460 美元,4 GB 内存、80 GB 硬盘、10000 GB 流量)或者 Residential-LARGE(每年 1660 美元,16 GB 内存、320 GB 硬盘、40000 GB 流量)。这一类人买的是 IP 属性而不是配置,所以不要拿别家的配置价格来比——比是没有意义的。 验收重点除了常规六项,还要额外加一条:实际抓取任务的成功率,因为 IP 属性是否达标只能靠真实业务跑出来才看得出来。
第四类:站点已经验证过、流量稳定在百万级以上的成熟业务,或者素材下载、图片站这类单页体积大的场景。 直接选大流量、高带宽的年付档位,并且优先考虑存储型机型。 LAX-LARGE 是每年 1600 美元、8 核 16 GB 内存、320 GB 硬盘、40000 GB 流量、10000 Mbps 带宽,折合每月 133.33 美元,每 TB 流量 3.41 美元;如果是素材站,LAX-Storage-1TB 是每年 700 美元、8 GB 内存、1000 GB 硬盘、15000 GB 流量、10000 Mbps 带宽,硬盘单价只有 0.06 美元,是全表最低。这一类人年付是划算的,因为流量单价只有月付方案的零头,而且一旦机器规格不够,迁移成本会非常高。 验收重点是 5xx 错误率和 CPU 平均占用必须压住,因为流量大的时候这两个指标比延迟更容易先崩。
最后补一句给所有人的提醒:价格随时会变,本文所有单价来自商品库 2026-11-06 16:30 的快照,下单前请以商家页面当日显示为准。 尤其是库存字段,云途的部分机型库存数量是 0(HK.DS.M、DS.ES.F、DS.ES.A、HK.DS.B 都是 0),这些是随时会变的状态,下单前一定要确认现货。 选好了档位就去看对应的机型页确认报价和库存,把上面那六项验收标准先存下来,机器到手当天跑一遍——问题在第一天暴露出来,换机只需要一小时;问题在第三个月暴露出来,你得回溯日志、比对数据、迁移内容,那是几天的工作量。

喜欢
高兴
鬼脸
呵呵
无聊
伤心