能否为Azure Blob存储静态网站添加无公共CNAME的自定义域名?
问题描述
我有一个Azure Blob存储静态站点,希望为其添加自定义子域名(使mysite.example-company.com指向该静态站点),目前正按照官方文档操作。
该静态站点的防火墙已在Azure网络页面配置为仅允许公司VPN连接(即仅内部可访问站点),因此我仅需创建仅VPN用户可见的内部CNAME记录。
但在Azure网络页面输入自定义域名时,收到错误信息:
Failed to update storage account 'example'. Error: The custom domain name could not be verified. CNAME mapping from mysite.example-company.com to any of example.blob.core.windows.net,example... does not exist
我推测失败原因是Azure正在查找公共CNAME记录,请问是否存在无需公共CNAME记录即可为Azure静态站点添加自定义域名的方法?
解决方案
目前Azure Blob存储的原生自定义域名验证机制必须依赖公共可解析的CNAME记录,因为Azure的验证服务从公网发起查询,无法访问内部DNS服务器上的私有记录。不过可以通过以下几种方案绕开这个限制:
方案1:使用Azure Front Door(推荐)
- 创建Azure Front Door实例,将Blob静态站点设为后端源,同时配置Front Door的防火墙规则,仅允许公司VPN的IP范围访问
- 在Front Door中添加自定义域名
mysite.example-company.com,此时可选择TXT记录验证:要么临时在公网DNS添加验证所需的TXT记录,完成验证后删除;要么利用Azure的私有DNS区域配合虚拟网络链接完成验证(无需公网记录) - 验证完成后,在内部DNS添加CNAME记录,将
mysite.example-company.com指向Front Door的终结点。这样VPN用户访问自定义域名时会通过Front Door路由到Blob站点,公网用户因Front Door的防火墙限制无法访问
方案2:使用私有端点+内部DNS映射
- 为Blob存储创建私有端点,确保站点仅在公司虚拟网络内可访问
- 在内部DNS服务器中创建一条CNAME记录,将
mysite.example-company.com指向Blob私有端点的FQDN(例如example.privatelink.blob.core.windows.net) - 这种方式完全不需要公网DNS记录,所有流量都在内部网络流转,但需要确保VPN用户的设备已接入公司虚拟网络,且内部DNS能正确解析该私有FQDN
方案3:临时添加公共CNAME记录(应急方案)
- 短时间内在公网DNS添加CNAME记录,将
mysite.example-company.com指向example.blob.core.windows.net,完成Azure的域名验证后立即删除该公网记录 - 保留内部DNS的私有CNAME记录不变,VPN用户依然可以正常访问,公网用户因Blob的防火墙限制无法访问站点
内容的提问来源于stack exchange,提问作者J L
相关产品推荐
相关产品推荐

