
一、两者职责不同,不冲突
| 能力 | WAF | CDN |
|---|---|---|
| 核心目标 | 拦截攻击 | 加速访问 |
| 处理对象 | 恶意请求 | 静态资源 |
| 缓存 | 不缓存 | 强缓存 |
| 典型收益 | 安全 | 速度 + 省带宽 |
一个是”安检门”,一个是”物流仓”。目标不同,正好互补。
二、顺序怎么排
2.1 推荐:WAF 在前
用户 → WAF(安全检测)→ CDN(缓存加速)→ 源站
优点:
✅ 恶意请求在进入 CDN 前就被拦掉,不会污染缓存
✅ CDN 只处理"干净"流量,缓存命中率更高
✅ 攻击流量不会消耗 CDN 的流量额度
2.2 CDN 在前(部分场景)
用户 → CDN → WAF → 源站
优点:
✅ CDN 先就近接入,降低延迟
✅ 静态资源可被 CDN 直接返回,无需经过 WAF
缺点:
⚠️ 攻击流量会消耗 CDN 流量,成本可能上升
⚠️ 缓存层可能缓存了被攻击伪造的内容(缓存投毒)
2.3 一体化产品(最省心)
不少云厂商推出”WAF + CDN”一体化产品,边缘节点本身就同时具备安全检测和缓存能力,不存在顺序问题,配置也最简单。
三、分属不同厂商时的配置
如果 WAF 和 CDN 是两家服务商,需要处理 CNAME 链:
解析链路:
www.example.com
→ CNAME → www.example.com.cdn.com (CDN 厂商)
→ CNAME → www.example.com.waf.com (WAF 厂商)
→ A → 182.61.129.196 (最终节点)
配置要点:
1. 在 WAF 控制台把源站设为 CDN 的回源地址
2. 在 CDN 控制台把回源地址设为真实源站
3. 让域名解析按期望顺序串联
四、必须处理的三个问题
4.1 真实 IP 透传
经过多层代理,源站看到的 IP 早已不是访客的。必须在 Nginx 配 real_ip 模块,并逐层设置信任的代理段:
set_real_ip_from 182.61.129.0/24; # WAF 回源段
set_real_ip_from 1.2.3.0/24; # CDN 回源段
real_ip_header X-Forwarded-For;
real_ip_recursive on;
4.2 缓存策略
- 动态页面(如登录后的页面)不缓存,避免串号
- 静态资源(js/css/图片)长缓存,加版本号或 hash
- API 接口默认不缓存,除非是纯查询类
- 带 Cookie 的请求通常应绕过缓存
4.3 回源限制
源站要同时允许 WAF 和 CDN 的回源 IP 访问,但两者的 IP 段不同。建议把所有回源段整理成一份白名单,定期更新。
五、性能与成本权衡
| 关注点 | WAF 在前 | CDN 在前 |
|---|---|---|
| 攻击流量成本 | 低(被 WAF 拦掉) | 高(消耗 CDN 流量) |
| 静态资源延迟 | 略高(多绕一层) | 更低 |
| 缓存污染风险 | 低 | 较高 |
| 配置复杂度 | 中 | 中 |
| 推荐度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
六、小结
WAF 和 CDN 是安全与加速的黄金搭档,可以也建议一起用。顺序上推荐”WAF 在前”,让脏流量在进入加速层之前就被清理干净。如果嫌复杂,直接选一体化产品最省事。无论哪种组合,真实 IP 透传和回源白名单都是必须处理好的基础配置。
如果你的站点正被恶意爬虫、CC 攻击困扰,或需要一套开箱即用的 Web 应用防护,可以了解百度云防护 Web 应用防火墙(专业版 299 元/月,年付 2399 元,可联系主机吧客服购买)——支持自定义访问策略、URI 频率限制、BOT 防护、威胁情报与 API 防护,无需改动源站代码,改 DNS 即可接入。包年包月计费,流量峰值买多少防多少,无后付费陷阱。
