1.
为什么要把图片/视频放到CDN上
说明CDN对静态资源的作用与好处:降低源站带宽、提高并发、缩短延迟。
列出适用文件:jpg、png、webp、mp4、m3u8等。
指出CDN的基本工作方式:CNAME或Pull/Push模式。
说明常见指标:缓存命中率、回源带宽、边缘延迟。
强调与域名、DNS和SSL证书的关系,CNAME指向CDN域名并绑定证书。
说明对SEO和用户体验的正面影响,并给出常见问题提示。
2.
示例一:Cloudflare 为图片加速的具体设置
注册Cloudflare并把域名NS改为Cloudflare提供的NS。
在DNS中新增CNAME:cdn.example.com -> example.cloudflare.net(示例)。
Page Rules设置:匹配 cdn.example.com/* 选择 Cache Level: Cache Everything,Edge Cache TTL: a month。
源站Nginx需添加响应头:cache-control: public, max-age=2592000。
实测参数:边缘延迟平均40ms,缓存命中率可达85%-95%(取决文件更新策略)。
3.
示例二:阿里云CDN / AWS CloudFront 用于视频分发
视频建议使用OSS/S3做存储,CDN采用Pull(回源)或Push(推流)模式。
CloudFront行为配置示例:Path Pattern = *.mp4, Viewer Protocol Policy = HTTPS Only, Allowed HTTP Methods = GET, HEAD, Origin Protocol Policy = HTTPS Only。
签名URL示例:设置签名URL过期时间3600秒,保护付费/私有视频。
支持Range请求以实现断点续传,源站Nginx需开启 Accept-Ranges: bytes。
边缘缓存时间可以设置成1小时到7天,短视频建议1h,静态大文件建议7d。
4.
源站(Nginx)配置示例与缓存策略
Nginx总体配置示例(关键行):worker_processes auto; worker_connections 1024;。
proxy_cache配置示例:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m max_size=50g inactive=10d use_temp_path=off;。
location配置示例:proxy_cache mycache; proxy_cache_valid 200 302 30d; proxy_cache_valid any 1h; add_header X-Cache-Status $upstream_cache_status;。
静态文件头配置:location ~* \.(jpg|png|webp|mp4)$ { expires 30d; add_header Cache-Control "public, max-age=2592000"; }。
示例服务器资源:VPS 4vCPU / 8GB RAM / 200GB NVMe,单机最大并发约500-1000连接(取决优化)。
5.
DDoS防护与CDN的协同设置
使用CDN的Anycast边缘可吸收大流量,降低源站被直连风险。
Cloudflare/阿里云WAF开启后可拦截异常请求、Bot及7层攻击。
Nginx限流示例:limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 10; 限速 limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s;。
启用Origin Shield或源站防护,设置白名单只允许CDN回源IP访问源站。
建议监控阈值:连续5分钟回源带宽 >100Mbps 或 异常请求数 >10000/s 时自动告警并切换到应急池。
6.
真实案例:某电商站图片+视频上CDN前后对比
案例背景:日活用户100k,日PV 500k,原站带宽峰值 600Mbps。
源站配置:VPS 4vCPU/8GB/200GB NVMe,Nginx + PHP-FPM,启用proxy_cache与Expires头。
采用方案:图片走Cloudflare,视频走阿里云CDN(OSS为源),图片Cache TTL 30天,视频Edge TTL 1小时,签名URL 3600s。
结果数据如下表所示(监测周期7天):
| 指标 | 上CDN前 | 上CDN后 |
| 源站带宽峰值 | 600 Mbps | 40 Mbps |
| 平均边缘延迟 | 220 ms | 45 ms |
| 缓存命中率 | 0% | 88% |
| 回源请求数/天 | 500k | 60k |
结论:使用CDN后回源带宽下降约93%,用户加载速度大幅提升,服务器压力显著减小。
7.
结语与推荐实践
推荐流程:准备好域名与证书、选择合适CDN提供商、配置CNAME并在源站设置正确Cache-Control。
小文件如图片长TTL(7-30天),大文件如视频根据更新频率设置短TTL或使用版本化URL。
生产环境建议使用HTTPS强制,并对回源做IP白名单以防绕过CDN。
监控建议:缓存命中率、边缘延迟、回源带宽和异常流量告警。
遇到突发DDoS时启用“挑战/封禁”策略并联系CDN厂商开通应急支持。