在当今的出海 B2B 业务中,网站的速度和稳定性就是金钱。但对于初创项目,我们往往面临一个两难的选择:是购买昂贵的海外 CN2 GIA 服务器,还是利用国内现有的服务器资源?
下面的站点架构是一个典型的小资源挑战案例:
- 服务器:位于中国大陆。
- 业务目标:面向全球客户。
- 面临挑战:跨境链路不稳定、内存捉襟见肘、遭受 SEO 垃圾外链攻击。
经过一系列的调试与优化,我摸索出了一套基于 Cloudflare + R2 对象存储 的“终极低成本高可用”方案。
一、 架构核心逻辑
为了保护小资源VPS,核心思路只有一条:“动静分离,极致卸载”。
- 动态请求 (HTML):由 Cloudflare 边缘节点回源到国内服务器。
- 静态资源 (CSS/JS):通过 Cloudflare Page Rules 强力缓存,几乎不回源。
- 图片资源 (Images):完全剥离到 Cloudflare R2 存储,通过
img.mysite.com独立分发,不消耗源站一分钱带宽。 - 恶意流量:在 Cloudflare WAF 层直接清洗,不让垃圾请求消耗 Nginx 算力。
二、 DNS 解析:安全第一原则
DNS 是接入 Cloudflare 的第一步,这里有几个极易踩雷的“坑”。
1. 开启“小黄云” (Proxied)
所有指向源站的记录(@ 和 www),必须开启“已代理”状态(橙色云朵)。
原因:只有开启代理,Cloudflare 的 WAF 防火墙、缓存规则、SSL 加速才会生效。否则它只是一个普通的 DNS 解析服务。
2. 拒绝通配符 (Wildcard)
Cloudflare 系统可能会提示你添加一条 * 的 A 记录。千万不要添加!
原因:免费版 Cloudflare 不支持对 * 记录进行代理保护。一旦添加,你的源站真实 IP 将直接暴露在公网,极易遭受 DDoS 攻击。
3. 推荐使用 CNAME
建议将 www 记录通过 CNAME 指向根域名(如 mysite.com)。这有助于后续运维,当更换源站 IP 时,只需修改一处即可自动同步。
三、 WAF 安全防御:打造“叹息之墙”
最近我的网站遭受了大量的 SEO 垃圾外链攻击(涉及社工库、博彩、多语言垃圾词),导致 GSC 报表出现大量 404。为了节省服务器资源,我直接在 Cloudflare 边缘层进行拦截。
配置路径:Security -> WAF -> Custom rules
动作建议:Block (直接阻断)
以下是我整理的“终极版”拦截规则表达式,涵盖了 XMLRPC 攻击、中文灰产、多语言博彩及恶意符号。你可以直接在编辑表达式时粘贴使用:
(http.request.uri.path contains "/xmlrpc.php") or
(http.request.uri.path contains "wp-trackback.php") or
(http.request.uri.path contains "社工库") or
(http.request.uri.path contains "查手机") or
(http.request.uri.path contains "查定位") or
(http.request.uri.path contains "通话记录") or
(http.request.uri.path contains "查开房") or
(http.request.uri.path contains "私家侦探") or
(http.request.uri.path contains "关联地址") or
(http.request.uri.path contains "狗仔队") or
(http.request.uri.path contains "追债") or
(http.request.uri.path contains "讨债") or
(http.request.uri.path contains "代查") or
(http.request.uri.path contains "同城约") or
(http.request.uri.path contains "上门服务") or
(http.request.uri.path contains "迷药") or
(http.request.uri.path contains "催情") or
(http.request.uri.path contains "办证") or
(http.request.uri.path contains "代开票") or
(http.request.uri.path contains "高仿") or
(http.request.uri.path contains "A货") or
(http.request.uri.path contains "老虎机") or
(http.request.uri.path contains "百家乐") or
(http.request.uri.path contains "博彩") or
(http.request.uri.path contains "六合彩") or
(http.request.uri.path contains "彩票") or
(http.request.uri.path contains "赌博") or
(http.request.uri.path contains "1xbet") or
(http.request.uri.path contains "bet365") or
(http.request.uri.path contains "casino") or
(http.request.uri.path contains "poker") or
(http.request.uri.path contains "roulette") or
(http.request.uri.path contains "baccarat") or
(http.request.uri.path contains "jackpot") or
(http.request.uri.path contains "slot") or
(http.request.uri.path contains "바카라") or
(http.request.uri.path contains "카지노") or
(http.request.uri.path contains "파워볼") or
(http.request.uri.path contains "토토") or
(http.request.uri.path contains "슬롯") or
(http.request.uri.path contains "パチンコ") or
(http.request.uri.path contains "chalacha") or
(http.request.uri.path contains "shegongla") or
(http.request.uri.path contains ".click") or
(http.request.uri.path contains ".xyz") or
(http.request.uri.path contains ".top") or
(http.request.uri.path contains "✔️") or
(http.request.uri.path contains "🌹") or
(http.request.uri.path contains "💔") or
(http.request.uri.path contains "🍀") or
(http.request.uri.path contains "❇️") or
(http.request.uri.path contains "🅾️")
四、 性能优化:榨干每一滴性能
对于国内源站,减少回源次数和握手延迟是关键。
1. 网络协议三件套 (Network)
这三项必须全部开启,它们能显著减少跨境 TCP 握手的开销:
- HTTP/2 to Origin:开启。减少源站连接数。
- HTTP/3 (QUIC):开启。利用 UDP 协议加速,在弱网环境下表现优异。
- 0-RTT Connection Resumption:开启。允许回头客“零延迟”发起请求。
2. 页面规则 (Page Rules) - 黄金 3 条
Cloudflare 免费版只有 3 条规则额度,针对 WordPress + R2 架构,这是最高效的用法:
- 规则 1:保护后台不乱套
- URL:
*mysite.com/wp-admin/* - 设置: Cache Level: Bypass (绕过缓存), Security Level: High, Disable Performance: On。
- URL:
- 规则 2:静态资源强力缓存 (关键)
- 注:因为图片走了 R2,这里的重点是缓存主题和插件的 CSS/JS 文件。
- URL:
*mysite.com/wp-content/* - 设置: Cache Level: Cache Everything, Edge Cache TTL: 1 Month, Browser Cache TTL: 1 Year。
- 规则 3:防止登录页缓存
- URL:
*mysite.com/wp-login.php* - 设置: Cache Level: Bypass。
- URL:
五、 避坑指南:这些功能千万别开!
由于源站和管理者在国内,Cloudflare 的某些涉及 JS 注入的功能会导致严重的“水土不服”(白屏、加载转圈)。
❌ 坚决关闭 (红色危险区)
- Rocket Loader™:它会重写 JS 加载逻辑,国内访问必挂。
- Speed Brain:新功能,其预取机制会增加源站负担且易受干扰。
- Bot Fight Mode:其 JS 验证在国内加载极慢,且容易误杀正常用户。
- Email Address Obfuscation:会导致国内用户看不到网页上的邮箱地址。
✅ 推荐开启 (绿色安全区)
- Cloudflare Fonts:必开。它会重写 Google Fonts 并由 CF 边缘节点托管,彻底解决国内加载 Google 字体卡顿的问题。
- Smart Tiered Cache (智能分层缓存):必开。让全球节点去“大节点”拿数据,而不是直接回源广州,极大降低源站压力。
结语
通过这套组合拳:R2 承载图片存储 + Page Rules 承载静态资源 + WAF 拦截恶意流量 + QUIC 加速传输,我们成功地将小资源服务器保护在了一个坚固的盾牌之后。
源站现在只需要专心处理少量的 HTML 动态请求,不仅节省了大量带宽成本,更保证了全球客户访问的丝滑体验。这就是技术与运维的魅力所在。