蓝易云CDN:使用CDN和WAF提升网站防护能力和访问速度

蓝易云CDN:用 CDN + WAF 同时把防护和速度做上去

很多人把 CDN 和 WAF 当成两件事——一个管快,一个管安全。实际部署下来会发现,这两者放在同一层做,收益是叠加的:CDN 把静态内容推到离用户最近的节点,WAF 在同一个入口把恶意请求筛掉,源站只剩下真正需要处理的动态业务。少一次回源,既省带宽也少一份风险。

下面按落地顺序讲清楚 👇

一、先想明白流量路径

接入之后,请求的完整链路是:

用户 → DNS 解析到 CDN → 边缘节点(WAF 检测 + 缓存判断) → 命中则直接返回 / 未命中回源 → 源站

关键点在于:WAF 的检测发生在缓存之前。请求先过安全规则,通过了才去查缓存或回源。这意味着攻击流量根本到不了源站,源站的 CPU 和数据库连接数被保护住了。

理解这条链路,后面所有配置的取舍才有依据。

二、CDN 这一侧:把速度真正跑出来

接上 CDN 不等于变快,命中率上不去,等于多绕了一跳。

缓存策略要分类型设置 📦

  • 图片、CSS、JS、字体等指纹化资源:缓存时间可以给到 30 天甚至更长,配合文件名带 hash,更新时换文件名即可。
  • HTML 页面:设置较短时间(几分钟到几小时),或用协商缓存。
  • 接口、登录态相关路径:明确设置不缓存,避免串号这类严重事故。

忽略无意义参数。很多统计工具会在 URL 后追加 ?from=xxx?t=时间戳,如果不做处理,每个参数组合都是独立缓存对象,命中率会被稀释得很难看。

开启压缩与协议优化。Gzip/Brotli 压缩文本资源,体积能降到原来的三分之一以下;开启 HTTP/2 或 HTTP/3,多路复用能显著改善弱网和高延迟环境下的加载体验 ⚡

别忘了回源优化。开启回源合并(多个相同请求只回源一次),可以避免缓存失效瞬间大量请求同时打到源站。

三、WAF 这一侧:拦得住,也别误伤

WAF 的价值在于把应用层的常见攻击挡在门外:SQL 注入、XSS、命令注入、文件包含、恶意扫描器探测等。规则库由厂商持续更新,比自己在代码里逐个补要现实得多。

上线节奏很重要 ⚠️

新接 WAF 千万不要直接开拦截模式。正确顺序是:

  1. 先开观察/记录模式,跑三到七天;
  2. 导出被命中的日志,逐条确认是真攻击还是业务误判;
  3. 对误判路径(后台富文本编辑器、包含特殊字符的接口、文件上传)建立白名单或调低规则等级;
  4. 确认可控后再切换成拦截。

跳过这一步直接开严格模式,最典型的后果就是后台发文章带 HTML 标签被拦、支付回调被拦,排查起来还很隐蔽。

CC 防护要按业务定阈值。登录、注册、短信发送这类接口需要严格限频;商品列表、内容页则要宽松。统一一个阈值必然顾此失彼。建议先统计正常业务的请求频率分布,取 P95 值再放大两三倍作为起点。

人机验证做兜底。触发阈值时先弹验证而不是直接封禁,误伤的用户还有机会自证,体验损失小很多。

四、两者配合的几个实战要点

1. 源站 IP 必须隐藏 🔐

这是最容易被忽略却最致命的一环。如果攻击者拿到源站真实 IP,CDN 和 WAF 都会被绕过。接入前要自查:历史 DNS 解析记录、邮件服务器、未接入 CDN 的子域名、SSL 证书透明日志,都可能泄露源站 IP。

配置完成后,在源站防火墙只放行 CDN 回源 IP 段,其他来源一律拒绝。

2. 拿到真实客户端 IP

经过 CDN 后,源站看到的是节点 IP。需要在 Web 服务配置中读取 X-Forwarded-For 头,否则日志分析、风控、限流全部失效。

Nginx 侧配置示例:

set_real_ip_from  <CDN回源IP段>;
real_ip_header    X-Forwarded-For;
real_ip_recursive on;

注意:set_real_ip_from 必须严格限定为 CDN 段,否则该头可被伪造。

3. 全链路 HTTPS

边缘到用户走 HTTPS,边缘回源同样建议走 HTTPS。只做前半段属于半加密,回源链路依然明文。同时开启 HTTP 强制跳转 HTTPS 和 HSTS。

4. 保留搜索引擎爬虫通道 🕷️

设置访问规则时,务必确认主流搜索引擎爬虫不被 CC 规则或 UA 黑名单拦截。验证爬虫身份要用反向 DNS 校验,不能只信 UA——UA 是可以伪造的。爬虫被拦会直接影响页面收录,这个代价通常比拦下几个扫描器大得多。

五、上线后持续要看的指标 📊

  • 缓存命中率:低于 80% 就该回头查缓存规则和参数处理
  • 回源带宽变化:突然上涨往往意味着缓存规则失效或有人在绕缓存
  • WAF 拦截日志 Top 规则:既能发现攻击趋势,也能发现误伤
  • 各地区首字节时间:判断节点覆盖是否符合用户分布

核心逻辑一句话:CDN 负责把能缓存的内容尽量在边缘解决,WAF 负责把不该进来的请求在边缘拦掉,剩下少量真实动态请求才交给源站。源站压力小了,响应自然快;攻击面收窄了,安全自然稳。两者不是二选一,而是同一个入口上的分工 ✅

THE END