强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

CDN 与 WAF 精讲教程 / 第01章 概述与网络架构

第01章 概述与网络架构

本章是整套教程的起点。我们将建立 CDN 和 WAF 的基本认知,理解它们在现代网络架构中的位置,并分析典型适用场景。


1.1 CDN 概述

1.1.1 什么是 CDN

CDN(Content Delivery Network,内容分发网络) 是一种分布式网络架构,通过在全球范围内部署大量边缘节点(Edge Node),将内容缓存到离用户最近的位置,从而加速内容分发。

核心问题: 当用户在北京访问部署在美国的服务器时,光速传播的理论延迟约为 60ms(单程),加上路由跳数、拥塞等因素,实际延迟可达 200-300ms。CDN 通过"就近访问"原则,将延迟降至 10-30ms。

无 CDN:                                有 CDN:
┌──────┐    200-300ms    ┌──────┐      ┌──────┐   10-30ms   ┌──────────────┐   ┌──────┐
│ 用户 │ ──────────────→ │ 源站 │      │ 用户 │ ──────────→ │  CDN 边缘节点 │ ──│ 源站 │
│(北京)│                 │(美国)│      │(北京)│             │  (北京 PoP)  │   │(美国)│
└──────┘                 └──────┘      └──────┘             └──────────────┘   └──────┘

1.1.2 CDN 的核心价值

价值维度说明量化指标
加速减少用户到服务器的网络延迟TTFB 降低 60-80%
可用性分布式架构避免单点故障SLA 可达 99.99%
节省带宽边缘缓存拦截大部分请求源站带宽降低 70-90%
安全隐藏源站 IP,集成 DDoS 防护攻击面显著缩小
弹性应对突发流量,自动扩容可承受 10x 以上峰值

1.1.3 CDN 市场主流厂商

厂商类型特点
Cloudflare全球免费套餐丰富,Workers 生态
AWS CloudFront云厂商深度集成 AWS 生态
阿里云 CDN国内国内节点覆盖最广
腾讯云 CDN国内与腾讯生态深度集成
Akamai企业级全球最大 CDN 厂商
Fastly开发者实时配置推送,VCL 灵活
jsDelivr开源免费公共 CDN,适合开源库

1.2 WAF 概述

1.2.1 什么是 WAF

WAF(Web Application Firewall,Web 应用防火墙) 是一种专门针对 HTTP/HTTPS 流量的安全防护设备或服务。它工作在应用层(Layer 7),通过预定义规则和机器学习模型识别并拦截恶意请求。

核心问题: 传统防火墙(Firewall)工作在 L3/L4,只能基于 IP 和端口过滤,无法识别 SQL 注入、XSS 等应用层攻击。WAF 填补了这一空白。

传统防火墙 vs WAF:

┌─────────────────────────────────────────────────────────────┐
│                     网络流量                                  │
└──────────────────────────┬──────────────────────────────────┘
                           │
                           ▼
┌──────────────────────────────────────────────────────────────┐
│              传统防火墙 (L3/L4)                                │
│  ✅ IP 白/黑名单    ✅ 端口过滤    ✅ 协议过滤                  │
│  ❌ 无法识别 SQL 注入   ❌ 无法识别 XSS   ❌ 无法识别 CC 攻击   │
└──────────────────────────┬───────────────────────────────────┘
                           │ 通过
                           ▼
┌──────────────────────────────────────────────────────────────┐
│              WAF (L7)                                         │
│  ✅ SQL 注入检测    ✅ XSS 过滤    ✅ CSRF 防护                │
│  ✅ 文件上传过滤    ✅ 命令注入    ✅ Bot 管理                  │
└──────────────────────────┬───────────────────────────────────┘
                           │
                           ▼
                      应用服务器

1.2.2 为什么需要 WAF

根据 OWASP Top 10 报告,Web 应用面临的主要威胁包括:

威胁说明WAF 防护方式
A01: Broken Access Control越权访问路径遍历规则、权限校验
A02: Cryptographic Failures加密失败强制 HTTPS、弱密码套件检测
A03: InjectionSQL/命令注入注入特征匹配、参数化检测
A04: Insecure Design不安全设计速率限制、业务逻辑防护
A05: Security Misconfiguration安全配置错误默认配置加固、信息泄露防护
A06: Vulnerable Components组件漏洞虚拟补丁(Virtual Patching)
A07: Authentication Failures认证失败暴力破解防护、凭证填充检测
A08: Data Integrity Failures数据完整性请求签名验证
A09: Logging Failures日志不足完整审计日志
A10: SSRF服务端请求伪造出站请求过滤

1.3 整体网络架构

1.3.1 现代 Web 架构中的 CDN + WAF 位置

                                    ┌─────────────────────────┐
                                    │     用户终端              │
                                    │  (浏览器/移动 App)        │
                                    └────────────┬────────────┘
                                                 │
                                    ┌────────────▼────────────┐
                                    │      DNS 解析            │
                                    │  (GeoDNS / Anycast)     │
                                    └────────────┬────────────┘
                                                 │
                              ┌───────────────────▼───────────────────┐
                              │          CDN 边缘层 (Edge)             │
                              │  ┌──────────────────────────────────┐ │
                              │  │ WAF 过滤 → 缓存查找 → 响应压缩   │ │
                              │  └──────────────────────────────────┘ │
                              └───────────────────┬───────────────────┘
                                                  │ (Cache Miss)
                              ┌───────────────────▼───────────────────┐
                              │       CDN 中间层 (Shield/Mid-Tier)     │
                              │  ┌──────────────────────────────────┐ │
                              │  │ 二级缓存 → 减少回源次数            │ │
                              │  └──────────────────────────────────┘ │
                              └───────────────────┬───────────────────┘
                                                  │
                              ┌───────────────────▼───────────────────┐
                              │       源站 (Origin)                    │
                              │  ┌────────┐  ┌────────┐  ┌────────┐  │
                              │  │  LB    │  │ App    │  │ DB     │  │
                              │  └────────┘  └────────┘  └────────┘  │
                              └───────────────────────────────────────┘

1.3.2 请求处理流程

一个典型的用户请求经历以下阶段:

阶段处理点操作典型耗时
1DNSGeoDNS 就近解析到边缘节点 IP20-50ms
2边缘 WAF检查请求是否匹配恶意规则1-5ms
3边缘缓存查询是否命中缓存1-2ms
4边缘压缩Brotli/Gzip 压缩响应体5-15ms
5中间层查询 Shield 节点缓存(如需回源)5-10ms
6源站动态请求处理、数据库查询50-500ms

1.3.3 流量分类

总流量
├── 静态内容 (约 70-80%)  → CDN 缓存直接响应
│   ├── 图片 (JPG/PNG/WebP/AVIF)
│   ├── 样式 (CSS)
│   ├── 脚本 (JS)
│   ├── 字体 (WOFF2)
│   └── 视频 (MP4/HLS)
│
├── 动态内容 (约 15-25%)  → 回源处理(可做动态加速)
│   ├── API 接口
│   ├── 个性化页面
│   └── 数据库查询结果
│
└── 攻击流量 (变化大)     → WAF 拦截
    ├── DDoS 流量
    ├── 漏洞扫描
    ├── Bot/爬虫
    └── 应用层攻击

1.4 适用场景分析

1.4.1 必须使用 CDN + WAF 的场景

场景痛点CDN + WAF 方案
电商大促突发 10-100x 流量、CC 攻击CDN 缓存商品页 + WAF 限速防 CC
SaaS 平台多租户数据隔离、API 滥用CDN 边缘计算 + WAF API 防护
游戏行业DDoS 峰值达数百 GbpsCDN 全球加速 + DDoS 流量清洗
金融行业合规要求严格、零容忍攻击自建 WAF + 专属 CDN 节点
新闻媒体突发热点事件流量暴增CDN 弹性扩容 + WAF 防爬

1.4.2 可以只用 CDN 的场景

场景说明
静态博客纯静态内容,攻击面小
开源项目文档公共内容,使用免费 CDN 即可
内部工具有 VPN/内网访问控制

1.4.3 可以只用 WAF 的场景

场景说明
内网 API 网关用户已在内网,无需 CDN 加速
小规模应用用户地域集中,源站覆盖即可

1.5 关键概念速查

概念说明
PoP (Point of Presence)CDN 厂商在各地部署的接入点
Edge边缘节点,直接面向用户的最近接入点
Origin源站,原始内容所在的应用服务器
Shield回源盾,CDN 中间层缓存,减少源站压力
Hotlink Protection防盗链,限制资源被第三方引用
Origin Pull主动回源,Cache Miss 时向源站获取内容
Origin Push主动推送,将内容预先分发到边缘
Virtual Patching虚拟补丁,WAF 临时封堵已知漏洞

1.6 注意事项

⚠️ IP 暴露风险:部署 CDN 后务必确保源站 IP 不直接暴露于公网,否则攻击者可绕过 CDN 直达源站。

⚠️ SSL/TLS 证书:CDN 与源站之间应使用独立证书,并开启 Full (Strict) 模式,避免中间人攻击。

⚠️ 缓存中毒:如果缓存键(Cache Key)设计不当,可能导致敏感内容被错误缓存并分发给其他用户。


1.7 扩展阅读


本章小结

主题核心要点
CDN分布式缓存网络,加速内容分发,隐藏源站
WAFL7 安全防护,拦截应用层攻击
架构DNS → Edge (WAF + Cache) → Shield → Origin
场景公开 Web 服务应优先考虑 CDN + WAF 组合

下一章:第02章 CDN 基础原理 →