Azure App Service与Cosmos DB同VNET跨子网连接失败解决方案咨询
解决方案:通过VNET实现App Service与Cosmos DB/Blob Storage的私有连接
问题根源
即使在同一个VNET里,Azure Cosmos DB和Blob Storage的VNET防火墙默认采用白名单机制——只有被显式添加的子网才能访问,哪怕是同VNET内的其他子网也不行。你把App Service集成到subnet_2,但没在Cosmos/Blob的VNET规则里放行这个子网,所以连接被阻断了。
针对Cosmos DB的配置步骤
- 打开你的Cosmos DB资源页面,进入「网络」选项卡
- 切换到「虚拟网络」标签,确保选中的是「允许从选定的虚拟网络和IP地址访问」
- 点击「添加现有虚拟网络」,选择你的目标VNET,然后选中App Service所在的
subnet_2,确认添加 - 保存配置,等待2-3分钟让规则生效
提示:哪怕你已经把Cosmos DB集成到subnet_1,也要单独添加subnet_2,因为每个子网都需要被显式授权。
针对Blob Storage的配置步骤
- 打开目标存储账户的资源页面,进入「网络」选项卡
- 在「防火墙和虚拟网络」标签下,选择「选定的网络」
- 在「虚拟网络」区域点击「添加现有虚拟网络」,选择你的VNET和App Service所在的
subnet_2 - 如果需要让Azure内部的一些服务(比如备份工具)访问存储账户,可以勾选「允许受信任的Microsoft服务访问此存储账户」
- 保存配置
额外检查项
- 确认App Service用的是区域VNET集成(不是网关集成):区域集成是同区域VNET资源访问的首选,网关集成仅适合跨区域或特定场景
- 检查子网NSG规则:确保subnet_2的出站规则没有拦截到Cosmos/Blob私有IP的流量,同时对应的目标子网(比如subnet_1)的入站规则允许subnet_2的流量
- 验证私有连接:在App Service的控制台里运行
nslookup <你的cosmos账户名>.documents.azure.com,如果解析到的是VNET内部的私有IP,说明配置生效了
内容的提问来源于stack exchange,提问作者Springy Developer
相关产品推荐
相关产品推荐

