服务器 CDN(内容分发网络)部署是一个系统工程,旨在通过将静态资源缓存到离用户更近的节点,从而降低延迟、提高加载速度并减轻源站压力。
以下是完整的 CDN 部署指南,涵盖从规划、配置到测试的全流程:
部署前准备
-
明确需求
- 资源类型:静态文件(图片、CSS、JS、视频)、动态 API 请求、全站加速?
- 覆盖范围:国内用户?全球用户?特定地区?
- 性能指标:预期 QPS、带宽峰值、并发连接数。
-
选择 CDN 服务商
- 国内主流:简米云 CDN、酷番云 CDN、华为云 CDN、百度云 CDN。
- 国际主流:Cloudflare、Akamai、AWS CloudFront、Fastly。
- 自建 CDN:使用 Nginx + Varnish 或 OpenResty(适合特殊定制需求,但维护成本高)。
-
域名准备
- 确保拥有独立的域名(如
static.yourdomain.com或cdn.yourdomain.com)。 - 域名需完成 ICP 备案(若服务中国大陆节点)。
- 确保拥有独立的域名(如
核心配置步骤(以主流云厂商为例)
添加加速域名
- 在 CDN 控制台添加你要加速的域名。
- 选择 加速区域(中国大陆、全球、海外等)。
- 选择 业务类型:
- 图片小文件:适合图片、文档。
- 大文件下载:适合安装包、视频。
- 全站加速:动静分离,支持 HTTP/2、QUIC 等。
配置源站信息
- 源站类型:
- IP 地址:直接填写服务器公网 IP。
- 域名:填写源站域名(推荐,便于后续迁移)。
- 源站端口:通常为 80(HTTP)或 443(HTTPS)。
- 回源协议:建议设置为 跟随 或 HTTPS,确保安全性。
配置缓存规则(关键!)
合理的缓存策略能极大提升性能:
- 静态资源(.js, .css, .png, .jpg, .woff2):
- 缓存时间:长期缓存(如 30 天 ~ 1 年)。
- 启用 ETag/Last-Modified 校验。
- (API 接口):
- 缓存时间:0 秒(不缓存)或短缓存(如 1-5 秒)。
- 开启 动态加速 或 边缘计算 优化路由。
- 特殊文件(如 index.html):
建议短缓存或无缓存,确保用户获取最新页面。
配置 HTTPS(SSL 证书)
- 上传证书:将 SSL 证书(.crt/.pem 和 .key)上传至 CDN 控制台。
- 强制 HTTPS:开启“HTTPS 强制跳转”,将 HTTP 请求重定向到 HTTPS。
- TLS 版本:建议支持 TLS 1.2 和 TLS 1.3。
配置回源策略
- 回源 Host:建议设置为源站域名,而非 IP,以便源站识别虚拟主机。
- 回源请求头:可透传或过滤特定 Header(如
Referer、User-Agent)。 - 带宽限制:设置回源带宽上限,防止突发流量打垮源站。
源站服务器配置
配置 Nginx/Apache
- 禁止直接通过 IP 访问:防止未备案域名或恶意解析绕过 CDN。
- 设置正确的 Header:
# Nginx 示例 location ~ .(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { expires 30d; add_header Cache-Control "public, immutable"; } - 日志记录:在源站日志中记录
X-Forwarded-For,以便分析真实用户 IP。
安全组/防火墙设置
- 仅允许 CDN 回源 IP 段:
- 大多数云厂商提供 回源 IP 段列表(如简米云、酷番云均有文档)。
- 在安全组中仅放行这些 IP 段,其他所有 IP 拒绝访问源站 80/443 端口。
- 注意:需定期更新 IP 段列表,因为 CDN 节点 IP 可能变化。
启用 Gzip/Brotli 压缩
- 在源站或 CDN 层启用压缩,减少传输体积。
- CDN 层压缩更推荐,因为边缘节点已解压,无需源站重复计算。
高级优化技巧
| 优化项 | 说明 |
|---|---|
| HTTP/2 或 HTTP/3 | 开启多路复用,减少连接延迟,提升加载速度。 |
| 缓存键(Cache Key) | 自定义缓存键,例如忽略 ?v=1.0 参数,避免同一资源因参数不同被重复缓存。 |
| 预热(Purge) | 新资源上线后,主动触发 CDN 节点预热,避免首次访问慢。 |
| 刷新缓存 | 更新资源后,及时在控制台刷新缓存,确保用户获取最新版本。 |
| 防盗链 | 配置 Referer 白名单或签名 URL,防止资源被恶意盗用。 |
测试与验证
-
DNS 解析切换
- 将域名的 DNS 解析记录从源站 IP 改为 CDN 提供的 CNAME 地址。
- 使用
ping或验证是否解析到 CDN 节点。nslookup
缓存命中测试
- 使用浏览器开发者工具(Network 面板)查看响应头:
X-Cache: HIT:表示命中缓存。X-Cache: MISS:表示未命中,回源获取。
- 多次刷新同一静态资源,观察是否始终为 HIT。
- 使用浏览器开发者工具(Network 面板)查看响应头:
-
性能测试
- 使用工具如 WebPageTest、GTmetrix、Lighthouse 测试加载速度。
- 对比 CDN 开启前后的首屏加载时间(FCP)、完全加载时间(LCP)。
-
压力测试
使用 JMeter 或 Cloudflare Load Testing 模拟高并发,验证 CDN 是否有效分担源站压力。
常见问题排查
-
问题 1:CDN 缓存不生效
- 检查源站是否返回了
Cache-Control: no-cache。 - 检查 CDN 控制台缓存过期时间设置。
- 检查 URL 是否包含动态参数(如时间戳),导致每次请求不同。
- 检查源站是否返回了
-
问题 2:HTTPS 证书错误
- 确保证书域名与加速域名一致。
- 检查证书是否过期。
- 确认源站是否强制 HTTPS,而 CDN 配置为 HTTP 回源。
-
问题 3:回源失败
- 检查源站安全组是否放行了 CDN 回源 IP。
- 检查源站 Nginx 配置是否正确监听 80/443 端口。
- 查看 CDN 监控日志中的“回源状态码”,如 502/504 表示源站问题。
CDN 部署的核心在于:正确的缓存策略 + 安全的回源配置 + 持续的监控优化,建议初期采用保守的缓存策略,逐步根据业务数据调整,以实现最佳性能与成本平衡。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/487647.html



