1.
概述:为什么正确配置CDN至关重要
- CDN能显著降低延迟并减轻源站带宽压力。
- 错误配置会导致缓存失效、频繁回源、页面加载变慢。
- 初学者常忽略HTTP头、DNS与证书间的联动关系。
- 本文目标:列出常见错误、提供配置示例与真实案例数据。
- 涵盖内容:服务器/VPS/主机、域名、CDN、DDoS防御、监控与测量。
2.
常见错误一:缓存策略与Cache-Control配置错误
- 错误表现:短TTL导致缓存命中率低,回源请求激增。
- 建议配置:静态资源 Cache-Control: public, max-age=31536000;HTML可用 max-age=60, stale-while-revalidate=30。
- Nginx示例(关键行展示):add_header Cache-Control "public, max-age=31536000"; add_header Vary "Accept-Encoding";
- 注意点:不要对带有敏感查询参数的URL使用长期缓存,使用cache-key忽略不必要的参数。
- 指标参考:缓存命中率从30%提升到85%可使源站带宽下降 ≈70%。
3.
常见错误二:HTTPS/证书与TLS配置不当
- 错误表现:证书链不完整导致CDN与浏览器间握手失败。
- 建议配置:启用TLS1.2及以上,优先使用ECDHE套件,证书链包含完整中间证书。
- CDN设置:验证Origin Pull时使用合适的SSL验证模式(例如验证SNI和证书)。
- 示例命令(检查证书):openssl s_client -connect origin.example.com:443 -servername example.com;查看证书链与协议。
- 真实风险:错误证书配置会产生HTTP 525/526类错误并导致SEO抓取失败。
4.
常见错误三:DNS与CNAME记录配置错误
- 错误表现:将根域直接CNAME到CDN导致不符合DNS规范或影响MX记录。
- 建议做法:使用A/AAAA记录指向负载均衡IP或使用DNS提供的ALIAS/ANAME记录解决根域问题。
- TTL设置建议:DNS TTL 300-1800秒用于灵活变更;但对高并发站点可设置更短TTL配合自动化。
- IPv6注意:若CDN提供AAAA记录,应同时配置以获得IPv6用户的低延迟。
- 排查工具:使用 dig +trace +short example.com 和 dig @8.8.8.8 cname example.cdn.net 检查解析链。
5.
常见错误四:源站性能与带宽瓶颈估算不足
- 错误表现:依赖CDN但源站CPU/IO或带宽仍是瓶颈,回源高峰时崩溃。
- 建议配置示例:典型中小站源站可选 VPS 2vCPU/4GB/40GB SSD,公网带宽100Mbps做基础;高峰需做弹性扩容。
- I/O与缓存:磁盘IOPS建议 ≥3000(SSD),避免动态请求全部打到磁盘。
- 连接数限制:nginx worker_connections 10240,keepalive_timeout 65,client_max_body_size 50M。
- 性能容量估算:100Mbps 可承载约 12.5 MB/s,假设平均页面1.2MB,带宽峰值约10 concurrent downloads。
6.
常见错误五:DDoS 与应用层攻击防护不足
- 错误表现:没有启用CDN自带DDoS防护或WAF,导致SYN/UDP洪泛或应用层爆发影响服务。
- 建议策略:启用速率限制、WAF规则与地理封禁;在网络层使用Anycast+黑洞策略。
- 実践阈值示例:对登录接口设置限速 10 次/分钟/IP;对API接口限速 500 req/s/全站。
- CDN能力:选择能吸收 >10Gbps 的CDN以抵御常见大流量攻击,必要时启用速率分级和挑战(challenge)机制。
- 日志与告警:启用实时流量监控,阈值如 200% 平均流量 时自动告警并触发防护策略。
7.
真实案例:电商站从慢到快的优化过程与数据
- 背景:某中型电商站点,峰值日PV 200万;源站为单台 VPS 4vCPU/8GB/100Mbps。
- 问题:未正确设置Cache-Control与CNAME,证书链缺失,DDoS防护未启。
- 处理措施:设置长缓存静态资源、修复证书链、使用CDN并启用WAF与速率限制、调整nginx参数。
- 调整后设置示例:静态 max-age=31536000;HTML max-age=30;nginx worker_processes auto;keepalive_timeout 65。
- 优化结果(下表):性能与带宽变化对比展示。
| 指标 | 优化前 | 优化后 |
| 平均首字节时间(TTFB) | 520ms | 120ms |
| 页面完全加载 | 3.2s | 0.9s |
| 源站带宽峰值 | 95 Mbps | 18 Mbps |
| 缓存命中率 | 28% | 82% |
8.
总结与最佳实践清单(可复制执行)
- 检查并设置合理的Cache-Control与ETag,静态资源长期缓存,HTML短缓存。
- 确保证书链完整并启用TLS1.2+,测试openssl s_client和在线SSL Labs。
- DNS使用合适记录(A/AAAA/ALIAS),TTL视业务需要调整至300-1800。
- 源站规格按并发与流量估算,预留CPU/IO与带宽冗余,nginx基础参数如上。
- 启用CDN的WAF与DDoS防护,设置合理速率限制并建立实时告警。