系列文章
Next.js + Strapi 架构:Cloudflare + VPS + R2 搭建可扩展的 SEO 内容站(从 0 到上线)
你可能已经踩过这种坑:页面做得挺快,文章也开始写了,但访问一多就慢;图片把 VPS 磁盘吃满;多语言一上来 URL 乱套;加广告后页面抖动(CLS)把体验和排名一起拖下水。要把内容站做成“能长期跑”的资产,Next.js + Strapi 架构需要从一开始就把职责拆清楚。

这套最终推荐架构长什么样
核心思路就一句话:前台渲染交给 Next.js,内容管理交给 Strapi,静态与安全交给 Cloudflare,图片与附件交给 R2。
架构总览(推荐版)
- 域名 → Cloudflare DNS/CDN → Next.js 前端
- VPS 内部:Strapi + Postgres + Nginx(或反代)
- Cloudflare R2:存图片 / 封面 / 附件(不占 VPS 磁盘)
每一层各做什么
- Cloudflare(DNS/CDN/SSL):入口、缓存、加速、防护、自动证书
- Next.js(App Router):SEO 页面输出、路由、多语言、SSG + ISR、广告位渲染
- Strapi(Headless CMS):编辑发布内容、内容模型、权限、API 输出
- Postgres:内容与配置数据(文章、分类、标签、多语言关联)
- R2(对象存储):图片/封面/附件,减少 VPS 压力并便于 CDN
上线前你需要准备的清单(一次买对)
1)域名:短、品牌型、别绑死未来
建议:
.com优先- 简短、好拼写
- 不带年份、不带地区
推荐购买:Cloudflare Registrar(省心,和 DNS/CDN 天然整合)
2)VPS:跑 CMS + 数据库的“地基”
推荐起步配置(内容站足够):
- 2 vCPU
- 4GB RAM
- 40–80GB NVMe
- Ubuntu 22.04 LTS
3)对象存储:图片/封面/附件不要放 VPS
推荐:Cloudflare R2
适合放:
- 文章图片
- 封面图
- 下载附件
不建议放 VPS 的原因很现实:磁盘增长不可控、备份麻烦、迁移成本高、带宽与缓存不经济。

4)CDN + DNS:Cloudflare 免费版就能打满基本盘
Cloudflare 免费版的价值点:
- 全球加速(边缘缓存)
- 基础防护
- 静态缓存
- SSL 自动证书
5)技术栈:用“内容站友好”的组合
- 前端:Next.js(App Router),SSG + ISR
- CMS:Strapi(Headless)
- 数据库:Postgres
SEO 最佳实践:多语言、URL、slug、hreflang 一次做好
内容站最常见的 SEO 问题不是“关键词没写”,而是 URL 与语言策略从第一天就错了。
URL 结构(推荐)
example.com/zh/xxxexample.com/en/xxx
英文建议使用:
en-US
不建议:
en-GB(除非你专门做英区)- 用参数切语言(如
?lang=en) - 用子域名分语言(如
en.example.com)——能做,但复杂度更高,起步不划算
slug 规则(长期稳定最重要)
- 全小写
- 用
-连接 - 不加日期
- 不要数字 ID
hreflang(必须做)
推荐组合:
zh-CNen-USx-default
你可以把它理解为:告诉搜索引擎“同一篇内容的不同语言版本在哪里”,减少互相竞争与错误收录。
广告策略:AdSense 能上,但别让 CLS 毁了体验和排名
如果你做内容站变现,最常见组合就是 Google Ads / AdSense。但广告上得越早,越要注意“页面稳定性”。
国家定向:先把不想要的流量挡在门外
建议只选:
- US / CA / AU / SG / JP 等
不选:
- EEA / UK(如果你明确不做这部分流量与合规)
广告加载方式:async + 预留高度
两条硬规则:
- 广告脚本 async 加载
- 广告容器预留高度(防止页面跳动导致 CLS 上升)
一个简单可执行的检查清单:
- [ ] 广告位容器是否设置了固定高度或最小高度
- [ ] 广告是否在正文“自然段落之间”而不是标题正下方
- [ ] 首屏是否避免塞太多广告(影响体验与停留)
- [ ] 移动端是否单独调整广告位间距与高度
从 0 到上线:最省返工的步骤顺序
按下面顺序做,几乎不会走回头路:
- 买域名
- 买 VPS
- 部署 Docker
- 起 Strapi + Postgres
- 配 R2(媒体上传走对象存储)
- 上 Next.js 前端(SSG + ISR)
- Cloudflare CDN 接入
- 接 Google Ads / AdSense
两个关键节点别跳过
A)先把媒体存储定下来(R2)
一旦内容量上来,迁移媒体最痛苦。先定 R2,后面只是扩容与优化。
B)前端优先用 ISR,别一上来就全 SSR
内容站的大多数页面是“发布后很久才更新一次”,ISR 更贴合成本与性能。
扩展路径:流量上来后怎么升级才稳
这套架构的好处是升级路线清晰,不需要推倒重来:
- 升级 VPS → 4C / 8G(最直接)
- 开 Redis(缓存/会话/热点数据)
- 拆数据库到独立实例(稳定性显著提升)
- 前端上 Vercel/边缘部署(可选,追求更极致的全球访问体验)
这套方案为什么适合“长期做内容站”
- 成本低:Cloudflare 免费版 + 一台 VPS 起步
- SEO 强:Next.js 输出稳定、URL/slug/hreflang 结构清晰
- 可长期扩展:缓存、数据库、前端部署都能独立升级
- 不被平台锁死:内容在 Strapi + Postgres,媒体在 R2,迁移有主动权
如果你要把它落成真正可用的生产站点,下一步最值得先做的是:把 Strapi 的内容模型(Article/Category/Tag)和 Next.js 的多语言路由(/zh、/en)定死,后面再加 sitemap、广告位和 webhook 刷新,节奏会非常顺。