CDN Setup 是一个面向内容分发网络配置与运维的技能技能包,来源为 bagelhole/devops-security-agent-skills 仓库。其目标是配置内容分发网络,以实现快速、可靠的全球资源交付,并包含正确的缓存、失效与安全设置。
【用途与适用场景】 当需要以低延迟向全球提供静态资源(JS、CSS、图片、字体)时;当需要把流量从源站卸载以降低计算成本时;当需要在边缘添加 TLS 终止与 DDoS 防护时;当需要实现基于地理位置的路由或内容限制时;当需要通过边缘缓存加速 API 响应时,可使用本技能。
【前置条件】 拥有可管理 DNS 的域名;拥有可提供内容的源站服务器,或 S3/R2 存储桶;已配置 AWS CLI(用于 CloudFront);拥有已配置区域的 Cloudflare 账户(用于 Cloudflare CDN);Terraform 1.5+(用于基础设施即代码示例)。
【主要能力】
- AWS CloudFront:通过 CLI 创建 S3 源分发(含 OAC 源访问控制);缓存失效(指定路径、全部失效及状态查询、历史列表);CloudFront Functions 轻量边缘逻辑(如为目录请求追加 index.html 的 URL 重写);使用 Terraform 定义分发、OAC、默认缓存行为、SPA 回退、API 直通(不缓存)等。
- Cloudflare CDN:通过 API 添加区域并获取区域 ID;使用 Cache Rules(替代 Page Rules)为静态资源配置缓存;清除缓存(全部、指定 URL、按前缀)。
- 源站缓存头:给出 Nginx 对哈希资源、图片字体、HTML、API 的缓存头配置示例。
- Cache-Control 速查:解释 public/immutable、must-revalidate、private、no-cache、no-store、s-maxage 等含义。
- 缓存预热:提供部署后预热关键页面与资源的 Bash 脚本示例。
- 缓存性能监控:通过响应头检查缓存状态(cf-cache-status、x-cache、age、cache-control),并查询 CloudFront 缓存命中率指标。
- 故障排查:给出症状、原因与修复对照表,如 DYNAMIC 状态、命中率偏低、部署后内容陈旧、CORS 错误、502 错误、混合内容警告、失效成本过高等。
【使用方式】 文档以命令和配置示例为主,包含 AWS CLI、curl 调用 Cloudflare API、Terraform HCL、Nginx 配置、Bash 脚本和 JavaScript 边缘函数。部分示例引用具体的分发 ID、区域 ID、域名和缓存策略 ID,需按实际环境替换。
【限制】 资料未说明 Fastly 的具体配置步骤,尽管描述中提到 Fastly;未提供收费、价格、平台限制或效果保证等信息;部分示例中的标识符、域名与证书 ARN 为示意值,需自行替换。