从Azure DevOps部署至虚拟网络内无公网访问的App Service失败排查
解决Azure自托管代理部署至无公网App Service的403 IP禁止问题
以下是针对你的问题的具体解决思路:
检查App Service及SCM站点的访问限制
部署操作依赖Kudu(SCM)站点完成,需同时确认主站点和SCM站点的访问规则:- 进入App Service的「网络」->「访问限制」,确认已添加代理VM的私有IP到允许列表,或设置为允许整个VNet内的流量访问。
- 切换到「SCM站点的访问限制」标签,重复上述检查,确保SCM站点也允许代理VM的IP访问。
验证VNet集成配置
- 确认App Service已成功集成到代理VM所在的VNet,在「网络」->「VNet集成」中查看状态为「已集成」,且子网正确。
- 检查代理VM所在子网是否启用了
Microsoft.Web服务端点,或是否配置了App Service的专用端点(专用端点会自动关联DNS解析)。
修复DNS解析问题
手动hosts映射无效大概率是因为部署任务优先访问SCM域名,需补充映射:- 在代理VM的
/etc/hosts中添加两条映射:privateAppServiceIp myapp.azurewebsites.net privateAppServiceIp myapp.scm.azurewebsites.net - 更可靠的方式是配置Azure专用DNS区域:创建
privatelink.azurewebsites.net专用DNS区域并关联到代理VM所在VNet,这样VM会自动解析App Service和SCM的私有IP,无需手动维护hosts。
- 在代理VM的
测试网络连通性
在代理VM上执行以下命令验证:- 测试DNS解析是否返回私有IP:
nslookup myapp.azurewebsites.net nslookup myapp.scm.azurewebsites.net - 测试HTTP访问是否正常:
如果返回私有IP但仍403,说明是访问限制配置问题;如果返回公网IP,说明DNS解析未生效。curl -v https://myapp.scm.azurewebsites.net
- 测试DNS解析是否返回私有IP:
检查Azure DevOps部署任务配置
- 使用「Azure App Service Deploy」任务时,确认是否启用了「使用专用网络连接」相关选项(部分任务版本支持通过私有端点访问)。
- 避免使用公网相关的部署参数,确保任务优先使用VNet内的私有访问路径。
内容的提问来源于stack exchange,提问作者AnotherGeek
相关产品推荐
相关产品推荐

