我之前设计过一个方案,希望通过 主域名路径映射 OSS 来实现静态资源与业务站点共域名访问。该方案基于 DCDN 的动态回源能力,理论上可以根据路径规则灵活地将请求分别回源到 ECS 或 OSS。
但在实际实施过程中,发现 DCDN 无法真正实现动态回源。在与阿里云技术支持沟通后得知,目前 CDN 可以实现路径级别的多源动态回源,而 DCDN 并不支持此功能。这让我感到有些意外------原本以为 DCDN 是 CDN 的"升级版",但在功能上却发现不少限制。
因此,接下来我计划将 DCDN 回退到传统 CDN,以实现主域名路径映射 OSS 的方案。下面将详细说明具体的切换步骤。

🎯 目标
我们要把:
text
example.com (当前在 DCDN)
平滑迁移到:
text
example.com (新的 CDN)
做到:
- ✅ 无中断
- ✅ 缓存一致
- ✅ 快速回滚
- ✅ 可监控验证
🧩 一、基本理解
| 项目 | DCDN(全站加速) | CDN(内容分发) |
|---|---|---|
| 适用场景 | 动静态混合、API加速 | 静态内容分发 |
| 支持协议 | HTTP / HTTPS / ALB / OSS | 同样支持 |
| 支持条件回源 | ✅ 支持(规则引擎) | ⚠️ 有限 |
| 配置迁移 | ❌ 不自动同步 | ✅ 手动复制 |
| 定价 | 略高 | 略低 |
🧱 二、切换前准备
1️⃣ 降低 DNS TTL
进入DNS 服务(如阿里云 DNS 控制台),
找到 example.com 的主域名记录:
plain
主机记录: @
记录类型: CNAME
记录值: dcdn-example.aliyuncs.com
TTL: 60
修改 TTL 为 60 秒(或 120 秒)。
📘 意义:让全球 DNS 缓存只保留 60 秒,方便我们快速切换 CNAME 到 CDN。
2️⃣ 导出 DCDN 配置
在阿里云控制台:
DCDN → 域名管理 → example.com → 【导出配置】
保存导出的 JSON 文件,例如:
plain
dcdn-example-config.json
其中会包含:
- 源站信息(OSS / ECS / ALB)
- 缓存规则
- Header 设置
- HTTPS 配置
- 自定义回源 Host 等
3️⃣ 在 CDN 控制台创建临时测试域名
创建一个 临时测试域名,比如:
plain
cdn-temp.example.com
在阿里云 CDN 控制台:
CDN → 域名管理 → 添加域名
填写:
- 加速域名:
cdn-temp.example.com - 回源配置:复制 DCDN 的相同设置
- 协议:与 DCDN 一致
- 源站 HOST:保持相同(非常关键)
4️⃣ 验证测试域名
访问:
plain
https://cdn-temp.example.com
确认:
- 页面加载正常
- 源站响应正确(非 404)
- HTTP 头信息包含正确的
Host、Cache-Control、CORS - 如果使用 HTTPS,证书配置正确
✅ 一切验证通过后,再进入正式迁移阶段。
🚀 三、迁移正式域名
1️⃣ 删除 DCDN 加速域名
在控制台:
DCDN → 域名管理 → 删除 example.com
⚠️ 删除只会移除加速配置,不影响源站或域名 DNS。
等待几分钟(通常 <5 分钟),
DCDN 会释放该域名的绑定状态。
2️⃣ 在 CDN 中添加正式域名
现在在 CDN 控制台 新建:
plain
example.com
配置内容直接照搬前面验证过的 cdn-temp.example.com:
- 回源地址(ECS / ALB / OSS)
- 协议(HTTP / HTTPS)
- 缓存规则
- 自定义头
- 回源 Host
💡 可使用导出的 JSON 文件,通过 OpenAPI 快速导入配置。
3️⃣ 修改 DNS 指向 CDN CNAME
进入DNS 服务,找到:
plain
example.com
修改记录:
plain
原来: dcdn-example.aliyuncs.com
现在: cdn-example.aliyuncs.com
TTL: 60
等待 1--2 分钟后,全球 DNS 缓存会刷新完毕。
4️⃣ 验证切换是否成功
运行以下命令测试 👇
plain
# 查看 CNAME 是否生效
dig example.com
# 测试 HTTP 访问头部
curl -I https://example.com
确认返回头部中包含:
plain
Via: cdn-example.aliyuncs.com
说明请求已走新的 CDN 节点。
5️⃣ 监控验证
在阿里云 CDN 控制台中查看:
- 访问带宽趋势
- 命中率(Hit Ratio)
- 回源流量(Origin Traffic)
如果访问稳定、性能正常,即迁移完成。
⚙️ 四、切换后优化
| 优化项 | 建议值 | 说明 |
|---|---|---|
| TTL 恢复 | 1800--3600 秒 | 降低 DNS 查询量 |
| 缓存预热 | 手动或脚本调用 | 避免冷启动 |
| 回源健康检查 | 开启 | 提高可用性 |
| SSL 自动续期 | 开启 | 保证 HTTPS 稳定 |
| 日志监控 | 开启日志推送至 OSS | 保留审计与性能数据 |
🔁 五、快速回退方案
若切换后发现问题,可立即执行:
plain
DNS 记录改回 dcdn-example.aliyuncs.com
由于 TTL 已为 60 秒,几乎一分钟内所有流量会恢复走 DCDN。
这就是"低 TTL" 的最大意义 ------ 快速回滚能力 💪
🧠 六、命令示例(可选)
plain
# 查看当前 DNS 缓存
dig example.com
# 清除本地 DNS 缓存
sudo killall -HUP mDNSResponder # macOS
ipconfig /flushdns # Windows
# 验证 CDN 节点
curl -I https://example.com
✅ 最终效果
| 项目 | 旧(DCDN) | 新(CDN) |
|---|---|---|
| CNAME | dcdn-example.aliyuncs.com | cdn-example.aliyuncs.com |
| 配置 | 保持一致 | 保持一致 |
| 切换时间 | <1 分钟 | ✅ 无中断 |
| 回滚 | 1 分钟内 | ✅ 快速恢复 |