一、为什么EC2网站急需CDN?
-
痛点场景
-
用户地理分布广 → 边缘节点访问延迟高
-
突发流量冲击 → EC2实例CPU飙升至90%+
-
图片/视频加载慢 → 平均首字节时间(TTFB)>800ms
-
-
CDN解决方案优势
-
✅ 全球200+边缘节点加速
-
✅ 减少源服务器70%以上流量压力
-
✅ 集成DDoS防护和WAF防火墙
-
二、4步实现CloudFront对接EC2(含避坑指南)
步骤1:源站准备(EC2配置关键点)
# 确保Nginx/Apache允许CloudFront IP访问
# 下载最新AWS IP范围(每日更新)
wget https://ip-ranges.amazonaws.com/ip-ranges.json
grep -B 2 "CLOUDFRONT" ip-ranges.json
步骤2:创建CloudFront分发
-
控制台操作路径
AWS Console > CloudFront > Create Distribution > Origin Domain填EC2公有DNS -
关键配置项
Origin Protocol Policy: HTTPS Only # 强制加密传输
Viewer Protocol Policy: Redirect HTTP to HTTPS
Cached Methods: GET, HEAD, OPTIONS # 缓存静态请求
TTL Settings:
- HTML: 300s
- CSS/JS: 31536000s (1年)
步骤3:DNS解析切换(以Route 53为例)
原记录: website.com A → 1.2.3.4 (EC2 IP)
新记录: website.com CNAME → d111abcdef.cloudfront.net
步骤4:HTTPS证书配置(ACM免费SSL)
-
在AWS Certificate Manager申请证书
-
将证书绑定到CloudFront分配的
Alternate Domain Names
三、性能优化高级技巧
-
缓存策略分层
-
路径模式缓存:
/images/*
设置1年缓存 -
查询字符串忽略:
?utm_source=xxx
不计入缓存键
-
-
压缩优化
# 在EC2源站启用gzip
gzip on;
gzip_types text/css application/javascript;
实时日志分析
启用CloudFront标准日志 → 导入Athena分析热力区域:
SELECT country, COUNT(*) AS requests
FROM cloudfront_logs
GROUP BY country ORDER BY requests DESC;
四、效果实测对比(电商网站案例)
指标 | 无CDN | 开启CloudFront | 提升幅度 |
---|---|---|---|
首页加载时间 | 4.2s | 1.3s | 223% |
图片加载延迟 | 980ms | 210ms | 366% |
源服务器流量 | 1.2TB/月 | 310GB/月 | 减少74% |
📌 成本提示: 免费套餐每月1TB出口流量 + 1000万次HTTPS请求
五、常见故障排查
-
错误码502
-
检查EC2安全组:是否允许
CloudFront IP ranges
的443入站 -
验证Nginx配置:
server_name
需包含CDN域名
-
-
缓存不更新
-
强制失效路径:
/*
或/images/product-123.jpg
-
设置Cache-Control头:
max-age=60
覆盖默认TTL
-