很多人的架构是直接把香港VPS当全能选手使——又要处理数据库,又要扛大流量图片,还得应付全国各地的访问请求。结果就是:带宽经常跑满,CPU偶尔飙高,用户还嫌慢。这不是VPS不行,是设计思路有问题。
今天这篇不讲虚的,直接给出一套完整的“香港VPS + 国内CDN”部署方案。核心逻辑就一句话:把静态资源交给CDN,让香港VPS只处理它该处理的动态请求。该花的钱花在刀刃上,该省的力气一点别多费。
一、先搞清楚:这俩东西各管哪摊
在动手之前,先把分工理清楚,后面才不会乱。
香港VPS(源站):跑你的核心业务逻辑——用户登录、购物车结算、API接口查询、数据库读写。这些事必须实时处理,没法缓存。
国内CDN:存你的静态资源——图片、CSS样式表、JavaScript文件、视频、下载包。把这些东西搬到离用户最近的国内节点上,用户访问时直接就近拿,不用绕到香港取货。
关键点:动态请求(比如查订单状态)永远走香港VPS,CDN不缓存这类内容,只透传。静态资源才走CDN缓存。
二、准备工作:把底子打牢
1. 域名备案
这是最绕不开的一步。国内CDN节点要求域名已完成ICP备案。如果你域名还没备案,先去接入服务商走备案流程。
好消息是:源站(香港VPS)不需要备案,只要CDN接入的域名备案了就行。这意味着你可以在备案期间先把业务部署在香港VPS上跑着,等备案下来再加CDN。
2. 选CDN服务商
个人建议:如果主要用户在国内,优先选阿里云或腾讯云。如果全球用户都有,可以考虑“国内用阿里云CDN,海外用Cloudflare”的双CDN架构。
3. 香港VPS侧准备
确保VPS上已经部署好你的Web服务(Nginx/Apache),并且能通过公网IP正常访问。建议启用BBR拥塞控制算法、调大TCP缓冲区、开启Gzip或Brotli压缩、申请SSL证书。这些前置工作在上一篇文章里已经详细说过,不重复。
三、部署流程:一步一步来
第一步:在CDN控制台添加域名
- 登录CDN控制台,点击“添加域名”
- 加速域名:填写你要加速的域名(比如 static.yourdomain.com),建议单独开个子域名专门放静态资源,不要和主站域名混用
- 业务类型:选“网站加速”或“图片小文件”,视频业务选“视音频点播”
- 加速区域:选“中国内地”(如果也服务海外用户,选“全球”但要留意跨境回源费用)
- 源站信息:源站类型选择“源站域名”或“IP”、填写你香港VPS的公网IP或域名、端口
- 回源HOST:这个容易踩坑。如果你的香港VPS上绑了多个站点,回源HOST要填具体站点的域名,否则CDN回源时不知道访问哪个站点
- 点击“下一步”,完成添加
第二步:配置缓存规则
这一步直接决定加速效果好不好。缓存配对了,回源流量少;配错了,CDN白花钱。
在CDN控制台的“缓存配置”里,按以下规则设置:
| 路径/文件类型 | 缓存时间 | 说明 |
| /static/* | 30天 | 静态资源目录,长期缓存 |
| *.jpg, *.png, *.css, *.js | 7-30天 | 根据更新频率调整 |
| /api/* | 0秒(不缓存) | API接口,必须实时回源 |
| *.html | 5分钟 | 页面文件,短期缓存 |
小技巧:静态资源命名时带版本号(比如 style.css?v=2.3.1),更新时改版本号,CDN就会自动拉取新文件,不用手动刷新缓存。
第三步:配置回源策略
CDN节点的缓存命中不了时,会回源到香港VPS取数据。回源路径的质量直接影响未命中时的响应速度。
重点配置几个地方:
回源协议:建议选“协议跟随”——用户用HTTPS访问,CDN就用HTTPS回源;用HTTP就HTTP回源。如果源站已经配了SSL证书,可以全程加密。
回源超时时间:默认一般是10秒,跨境线路可以适当调大到15-20秒,避免波动时频繁报错。
回源重试策略:开启“回源失败时切换备用源站”功能(如果有多个源站IP)。
如果预算充足,可以启用CDN服务商的“动态加速”或“智能路由”功能,能在回源路径上选择最优链路。对API接口这类不能缓存的请求尤其有用。
第四步:配置DNS解析
域名添加完成后,CDN服务商会给你一个CNAME地址(类似 xxx.cdn.aliyun.com)。
去你的域名DNS管理后台,做以下操作:
1. 添加一条CNAME记录
- 主机记录:填你加速的子域名(比如 static)
- 记录值:填CDN给的CNAME地址
- TTL:建议设短一点(300秒),方便测试时快速生效
2. 保留A记录不动:主域名(yourdomain.com)的A记录继续指向香港VPS的IP,别动它。只有静态资源子域名走CNAME到CDN。
这样配的好处是:主站动态请求直达香港VPS,静态资源请求走CDN节点,互不干扰。
第五步:验证生效
配置完成后等10-30分钟让DNS生效。用以下方式验证:
命令行验证:
# 看解析是否指向CDN的CNAME
dig static.yourdomain.com
# 看响应头里是否有CDN标志
curl -I https://static.yourdomain.com/test.jpg
如果返回头里有 X-Cache: HIT 或 Server: CDN,说明已经走CDN了。
浏览器验证:打开浏览器开发者工具(F12),访问页面上的静态资源,看Network面板里的“响应时间”和“响应头”。如果看到 x-cache: HIT 或类似字段,说明资源是从CDN节点返回的,没回源。
四、进阶优化:把效果再拉一档
基础部署做完,速度已经上来了。如果还想抠细节,这几个点值得弄:
1. 回源HOST别配错
这是新手踩得最多的坑。回源HOST不等于源站IP。
举个例子:
- 你的加速域名是
static.yourdomain.com - 香港VPS上部署了三个站点:
site1.com、site2.com、yourdomain.com - CDN回源时访问的是VPS的IP,但不知道要找哪个站点
所以回源HOST必须填你VPS上实际绑定的那个站点域名,通常就是主站的域名,而不是 static 子域名。
2. 开启智能压缩
在CDN控制台开启Gzip压缩,部分服务商还支持Brotli(压缩率更高)。图片多的站点还可以用CDN自带的图片处理功能——自动把JPG转成WebP格式,体积减少30%-50%。
3. 区域特殊配置(全球加速场景)
如果你的CDN加速区域选了“全球”,腾讯云和阿里云都支持“区域独立源站”功能——国内用户回源到国内中转节点,境外用户直接回源到香港VPS。这样国内访问不走跨境回源,速度更稳。
4. 香港VPS防火墙放行CDN节点IP
很多CDN服务商会提供回源IP段列表(通常以 103.x.x.x 或 116.x.x.x 开头)。建议在VPS的防火墙里只允许这些IP段访问80/443端口,拒绝其他来源——既安全,又避免被恶意流量直接打到源站。
Nginx里也可以用 allow/deny 做同样的限制。
五、常见问题排查
Q1:加了CDN之后,某些地区反而更慢了?
A1:大概率是缓存没命中,每次都回源了。检查CDN控制台的“缓存命中率”统计,如果低于50%,说明缓存策略太保守。把静态资源缓存时间拉长,或者检查是不是把不该缓存的路径也加了缓存。
Q2:回源失败怎么办?
A2:检查以下几点:香港VPS是否正常运行、防火墙是否放行了CDN回源IP段、回源HOST是否配置正确、源站带宽是否被打满。
Q3:动态API接口走CDN后延迟反而变高?
A3:动态请求本身不能被缓存,走CDN相当于多跳了一层(用户→CDN节点→香港VPS),反而增加了路径。正确的做法是:动态API不走CDN,直连香港VPS。可以在CDN配置里专门为 /api/* 路径设置“不缓存”,但权衡一下:如果APl延迟要求高,干脆不接入CDN,直接解析到香港VPS。
Q4:备案没下来能先用吗?
A4:可以先用Cloudflare等国际CDN顶一阵,但国内节点的加速效果不如国内厂商。或者直接用香港VPS裸奔,等备案下来再切CDN——这也是很多人选择香港VPS的原因:免备案就能先上线,后期再优化。
总结:这套方案的部署流程,关键不是操作有多复杂,而是把静态和动态拆开——静态资源喂给CDN,动态请求留给香港VPS。各司其职,比让一台机器扛所有事强太多了。
相关内容
