外观
CDN 接入配置指南:域名接入、缓存规则与回源设置
约 1346 字
CDN接入缓存
把站点接入 CDN 需要按顺序完成三件事:让加速域名通过校验、让缓存规则符合内容更新节奏、让回源能稳定取到源站内容。这份文档按这个顺序给出配置项、判断标准与回退办法。
一、适用范围
- 适用:静态站点或静态资源首次接入 CDN;新增加速域名;缓存命中率偏低或更新不及时的规则调整;源站地址变更后的回源参数修改。
- 不适用:DNS 解析排查与链路定位,见《站点访问链路检查操作说明》;动态接口的鉴权与签名设计,不在本文范围;证书签发流程以证书服务方的操作界面为准。
二、准备工作
| 项目 | 要求 | 检查方法 |
|---|---|---|
| 主域名 | example.com 已完成备案/实名等前置要求,可添加子域名 | 在加速域名配置页尝试添加 cdn.example.com |
| 源站信息 | 源站 IP 203.0.113.10、端口、回源 Host、站点根目录 /srv/axis | 直连测试,确认源站可对外提供内容 |
| 文件版本 | 静态资源文件名含内容哈希,便于长缓存 | 检查构建产物,如 app.9f2c1a.js |
| 证书 | 证书覆盖加速域名,且私钥可用 | openssl x509 -noout -subject -dates -in cert.pem |
| 账号权限 | 可修改加速域名、缓存规则、回源配置 | 在控制台逐项打开确认无只读提示 |
- 先在低流量子域名上验证规则,再切主域名,避免一次性影响全部访问。
- 修改缓存与回源前截图或导出原配置,作为回滚依据。
三、操作步骤
本节拆成三个子步骤,建议按顺序执行;每一步完成后先确认结果,再进入下一步。
3.1 域名接入
在加速域名配置页添加 cdn.example.com,完成归属校验、证书绑定,并取得 CDN 分配的接入地址。校验记录只用于证明域名归属,通过后即可清理,不要与业务解析记录混在同一主机名下,否则后续迁移时容易误删。详见 3.1 域名接入。
3.2 缓存规则配置
按文件类型与路径设置缓存时长、忽略参数策略与刷新方式,使静态资源可长缓存、页面更新能及时生效。规则按优先级从高到低匹配,先命中的规则决定结果,因此“不缓存”规则必须排在长缓存规则之前,否则会被前面的规则覆盖。详见 3.2 缓存规则配置。
3.3 回源设置
配置回源协议、回源 Host、端口与超时,确保 CDN 取到的是源站正确的站点,而不是默认站点。回源 Host 决定源站返回哪个站点,填错时 CDN 一切正常但内容不对,这类问题只能靠比对页面标题发现。详见 3.3 回源设置。
三项配置完成后再切换业务解析。切换前先用测试域名或本地 hosts 绑定验证一遍,确认内容、证书与缓存都符合预期,避免让全部用户先遇到问题。
四、验证方法
- 执行
dig +short cdn.example.com,预期返回 CDN 接入地址而非源站 IP;仍返回203.0.113.10说明解析未切换或 TTL 未到期。 - 执行
curl -sSI https://cdn.example.com/ | head -n 20,预期 200 且响应头带 CDN 节点标识;出现 403 或 521 时先查回源 Host 与源站端口。 - 连续请求同一静态资源两次,第二次的
age大于 0 或标记为命中,说明缓存生效;两次都未命中说明规则未匹配到该后缀。 - 发布一次内容更新后,对变更 URL 刷新缓存,再用
curl -sS https://cdn.example.com/ | grep -o "<title>[^<]*"确认取到新标题,而不是旧缓存内容。
五、常见问题
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 添加域名时校验失败 | DNS 记录未添加或 TTL 未生效 | 按提示添加 TXT/CNAME 记录,等 TTL 到期后重试 |
| 访问返回 403 | 回源 Host 不匹配或源站拒绝该 Host | 在回源设置中改为源站认可的 Host |
| 页面更新后仍是旧内容 | 页面被长缓存或未刷新 | 对 HTML 设短缓存,发布后按 URL 刷新 |
| 命中率长期偏低 | 缓存键包含随机参数或未按后缀配置 | 调整忽略参数策略,按后缀设置缓存时长 |
| 回源大量 5xx | 源站过载、端口错误或协议不匹配 | 核对回源协议与端口,必要时降级为 HTTP 回源 |
六、回滚与注意事项
- 回滚:保留原解析记录与原回源配置;出现异常时先把加速域名的解析指回源站,再逐项恢复缓存与回源参数。
- 注意:HTML 与带哈希的静态资源要分开配置,前者短缓存、后者长缓存,混用会造成更新延迟或命中率下降。
- 注意:刷新缓存有频率限制且不保证即时全节点生效,重要发布预留缓冲时间,不要卡在发布时间点刷新。