迁移 Azure CDN (Classic) 到 Azure Front Door

2025-08-07#Front Door#Azure

Azure CDN from Microsoft (classic) 即将不被支持,Azure 建议将其迁移到 Front Door。迁移的方式根据场景不同,可能有所不同。本文记录一次生产环境中的 Azure CDN 的迁移到 Azure Front Door 的过程。

Azure CDN from Microsoft (classic) 🔗

Azure CDN from Microsoft (classic) 在 Azure 的 Front Doors 的列表中,其 Service Type 被标记为 Microsoft CDN。打开任何一个 Profile,会看到它的面包屑路径为 Home > Load Balancing and content delivery | Azure Front Door。当前,微软在页面上有迁移事宜的提示。

迁移过程 🔗

告知相关方维护窗口 🔗

当一个自定义域名已经绑定到了 Azure CDN 之后,目前是无法将其将其添加到另一个 Front Door 的。因此,这必然需要先在 Azure CDN 中解除域名绑定,然后再配置 Front Door,于是站点就会出现服务中断。当然,也有避免服务中断的方法,比如在迁移期间,将域名指向 Front Door 之外的其他站点。这让事情变得复杂。

如果可接收服务中断,那么做好计划,告知相关方进行迁移的维护窗口。

从 Azure CDN 中删除自定义域名 🔗

默认情况下,从 Azure CDN 的 Endpoint 中删除自定义域名时,可能会遇到如下错误:

Can't delete custom domain **** because it is still directly or indirectly (using "cdnverify" prefix) CNAMEd to CDN endpoint "****.azureedge.net". Please remove the DNS CNAME record and try again.

按照提示,应该要修改域名的 cdnverify 前缀的 CNAME,将其指向 Azure CDN 之外的其他地址。但在实际中,可能这个 cdnverify 前缀的 CNAME 并不存在,同时即使修改了域名本身的 CNAME,也不会即时生效(更不知道多长时间生效,是在等不起)。幸好,Azure 允许通过注册 这个特性来解除这个限制。

查看注册情况:

az feature list -o table --query "[?contains(name, 'Microsoft.Cdn/BypassCnameCheckForCustomDomainDeletion')].{Name:name,State:properties.state}"

注册该特性时,在 PIM 到 Contributor 角色,然后执行:

az feature register --namespace Microsoft.Cdn --name BypassCnameCheckForCustomDomainDeletion

然后,从 Azure CDN 的 Endpoint 里删除自定义域名。如果需要复原,那么可以取消注册:

az feature unregister --namespace Microsoft.Cdn --name BypassCnameCheckForCustomDomainDeletion

配置 Front Door 🔗

在目标 Front Door 中,配置自定义域名、Origin Group、路由等;修改域名的 DNS 记录,指向 Front Door 的 Endpoint 域名。

验证 🔗

稍等片刻(5分钟左右),新的站点就正常了。

参考资料 🔗

  • https://learn.microsoft.com/en-us/answers/questions/580020/cannot-delete-custom-domain-cdn