1.
准备与评估
- 资产清单:列出域名、静态资源路径(/static、/images)、API子域(api.example.com)。
- 性能目标:确定加速目标(首字节时间、带宽削峰、全球覆盖)。
- 合规与数据主权:确认哪些资源不能出境缓存。
2.
选择CDN供应商与账户设置
- 比较要点:节点覆盖、TLS支持、WAF/防盗链、日志导出和API。
- 注册配置:创建项目/域名,记下CDN分配的域名(如 cdn123.cdnprovider.com)。
3.
DNS接入方式(CNAME/NS)
- 推荐CNAME接入:为加速的主域或子域添加CNAME指向CDN主机名。
- 操作示例:将www.example.com的CNAME改为cdn123.cdnprovider.com;生效后用dig或nslookup验证:dig +short CNAME www.example.com。
4.
源站配置与权限控制
- 源站可用性:确保源站对CDN节点可达(开放CDN节点IP或允许CDN回源)。
- 源站鉴权:在CDN面板设置“回源头信息”(Origin Header),在源站校验该Header拒绝直接请求。
5.
缓存策略与响应头设计
- 优先使用Cache-Control:静态资源设置Cache-Control: public,max-age=31536000;版本化文件名配合长期缓存。
- CDN规则:在CDN控制台按路径设置缓存规则(如/api/*不缓存,/static/*强缓存)。
6.
HTTPS与证书管理
- 自动证书:启用CDN的托管证书(Let's Encrypt或自有证书),选择Full或Full(strict)回源模式。
- 强制TLS:在CDN启用TLS1.2/1.3并在源站配置重定向HTTP->HTTPS。
7.
性能优化设置
- 压缩与合并:开启Gzip/ Brotli压缩;对文本类启用。
- HTTP/2或QUIC:启用多路复用和提升并发。
- 缓存分层:启用边缘缓存+中间缓存(如有)降低回源频次。
8.
安全加固(WAF与防护规则)
- 启用WAF模板:选择OWASP规则集,开启SQLi/XSS等常见规则。
- 速率限制:对登录/接口设置QPS阈值并配置IP封禁阈值。
- 防盗链与Referer白名单:静态资源设置防盗链规则。
9.
签名URL与私有资源保护
- 场景:付费下载或私有图片使用短期签名URL(Token)。
- 实现要点:在CDN或应用端生成带过期时间和签名的URL,CDN验证签名后放行。
10.
缓存清理与自动化(API示例)
- 手动清理:控制台选择路径或文件清理。
- API自动化示例:curl -X POST "https://api.cdnprovider.com/v1/purge" -H "Authorization: Bearer YOUR_TOKEN" -d '{"files":["/css/app.css"]}'。
- 注意点:对频繁发布的文件使用版本号以减少清理需求。
11.
监控、日志与告警
- 开启访问日志并导出(S3/OSS)用于审计与分析。
- 配置监控项:流量、命中率、回源流量、4xx/5xx错误率并在异常时邮件/钉钉告警。
- 定期复核:每周检查缓存命中率并优化规则。
12.
部署与验证步骤
- 步骤顺序:1) 在CDN创建域名->2) 配置回源->3) 配置证书与规则->4) 修改DNS->5) 验证。
- 验证命令:curl -I https://www.example.com 检查响应头(X-Cache/Via/CF-Cache-Status等),并用traceroute确认边缘节点。
13.
故障排查与回滚
- 常见问题:缓存命中率低、证书错误、404/403回源被拒。
- 处理方法:回退DNS到旧记录;在CDN临时关闭缓存规则或切换到备用源站;查看CDN回源日志定位403/401原因。
14.
问:如何在切换到CDN后确认请求已通过边缘节点?
问:如何在切换到CDN后确认请求已通过边缘节点?
答:用curl -I检查响应头,寻找CDN特有头(如Via、X-Cache、CF-Cache-Status),并用dig核实CNAME已生效;在不同地域用curl或在线工具验证节点响应。
15.
问:生产发布频繁如何避免频繁清理缓存?
问:生产发布频繁如何避免频繁清理缓存?
答:采用文件名版本化(hash或时间戳)、短资源使用短TTL、长资源用长期缓存并变更URL,必要时只清理关键文件路径且通过API批量清理。
16.
问:有哪些关键安全配置是必须启用的?
问:有哪些关键安全配置是必须启用的?
答:必须启用HTTPS(TLS 1.2/1.3)、WAF基础规则、回源鉴权(Header或IP白名单)、速率限制与日志导出,用签名URL保护私有资源并定期审计规则。