概述与目标
1) 目标:在保证页面访问稳定性与抗DDoS能力的前提下,降低源站带宽压力与峰值时延;
2) 范围:面向使用腾讯云CDN+高防CDN联动的Web站点(HTTP/HTTPS、静态资源、API接口);
3) 指标:目标将95p延迟降低至<150ms,页面可用率提升至99.99%,抗攻击带宽能力提升至200Gbps以上;
4) 成果形式:方案包含架构、DNS策略、源站和Nginx配置、缓存规则、监控与演练手册;
5) 前提条件:已购买腾讯云CDN与高防产品(如Anti-DDoS Pro/Advanced 或第三方高防CDN),并可配置CNAME与自定义回源。
联动架构设计(腾讯CDN + 高防CDN)
1) 双层防护:外层使用高防CDN(提供L3/L4大流量防护),内层使用腾讯CDN(边缘缓存、加速与L7防护);
2) 拆分职责:高防负责吸纳大流量/异常流量;腾讯CDN负责静态缓存、TLS卸载与全站加速;
3) 流程示意:DNS -> 高防CDN(首层) -> 腾讯CDN(边缘回源) -> 源站;回源带宽通过高防出口限流与清洗;
4) 回源策略:回源IP为高防的清洗出口或腾讯云回源专用IP,防止源站暴露真实公网IP;
5) 健康检查:在高防和腾讯CDN均开启主动健康检查,若一侧异常自动切换流量或提高清洗等级。
DNS与流量分发策略
1) CNAME链路:将域名CNAME指向高防提供的清洗域名,再由高防CNAME到腾讯CDN或直接回源,根据产品支持灵活配置;
2) TTL设定:将DNS TTL设置为60~300秒以便快速切换,重要记录采用低TTL;
3) 权重与灰度:使用DNS权重或流量控制策略在高峰期按比例分流至不同CDN节点或备用区域;
4) 健康与故障转移:通过监控平台(如腾讯云监控、Prometheus+Alertmanager)触发DNS切换或API级别变更;
5) 黑白名单与自定义解析:对管理端API或管理域名使用白名单解析,避免管理链路被攻击。
源站与Nginx配置示例
1) 源站规格示例:8 vCPU、16GB内存、500GB NVMe、1Gbps弹性带宽(示例用于电商高峰);
2) Nginx基础配置(关键项示例):worker_processes auto; worker_connections 10240; keepalive_timeout 65; proxy_buffering on;
3) 缓存与回源头示例:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:100m max_size=20g inactive=60m; proxy_cache_valid 200 302 10m;
4) 真实IP获取:设置 set_real_ip_from <腾讯CDN/高防IP段>; real_ip_header X-Forwarded-For; real_ip_recursive on;
5) TLS与安全:ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; 限流示例:limit_req_zone $binary_remote_addr zone=one:10m rate=20r/s;
CDN缓存与防护规则
1) 缓存策略:静态资源(js/css/png)缓存30天,图片和大文件采用长缓存并配合版本化;动态接口缓存短至0~30秒或使用Vary和Cache-Control按需控制;
2) 缓存刷新与降级:关键发布采用CDN接口预热+按路径批量刷新,出现缓存穿透时启用“应急合并请求”与“降级响应”;
3) WAF与规则:启用腾讯云WAF或高防WAF,配置常见OWASP规则、API速率阈值、IP信誉库拦截;
4) 限速与验证码:对异常请求触发阈值采用403/302验证码页面,结合JS挑战或图形验证码降低误杀;
5) 回源带宽控制:在高防出口或回源网关设置最大并发/带宽控制,避免回源瞬时拥塞导致源站挂掉。
监控、演练与应急切换
1) 指标监控:监控QPS、RPS、95p延迟、页面成功率(2xx),以及带宽/连接数、清洗流量量级;
2) 报警阈值示例:QPS突增50%且95p延迟>300ms触发一级报警;带宽占用>70%触发扩容预案;
3) 演练周期:每季度进行一次联动演练(包括:DNS切换、CDN刷新、回源限流、生效校验);
4) 应急切换流程:确认攻击类型->提升高防清洗等级->缩小回源范围->切换DNS至备用CDN->通知业务下游;
5) 日志与取证:保留WAF和高防流量日志(至少90天),并导出攻击样本用于规则调优。
真实案例与数据对比(含具体数据演示)
1) 背景:电商平台某次促销遭遇L3/L4混合流量+DDoS HTTP层攻击,原始架构仅腾讯CDN回源,源站短时间内带宽与连接数耗尽;
2) 方案:追加
高防CDN做首层清洗,腾讯CDN继续做边缘缓存,配置低TTL DNS与自动切换脚本;
3) 源站配置:8vCPU/16GB/500GB NVMe,Nginx worker_connections=10240,proxy_cache 20GB;
4) 演练结果:联动后在24分钟内将清洗带宽从0提升至150Gbps并稳定;95p延迟从峰值720ms降至120ms;
5) 数据对比表(攻击前/攻击中/联动后)如下:
总结与实施建议
1) 优先级:先购买并启用高防吸收大流量,再用腾讯CDN做边缘加速与L7防护,明确回源路径与IP白名单;
2) 小步快跑:先在测试域名完成CNAME链路与回源验证,逐步在业务域名切换并观测指标;
3) 自动化:通过API实现DNS切换、CDN刷新和报警联动,缩短人工响应时间至分钟级;
4) 资源准备:为高峰期准备备用资源(备用CDN厂商、额外高防带宽、备用源站);
5) 长期维护:定期清理缓存策略、复盘WAF规则与演练结果,不断调整阈值与保护策略。