问题描述
在一次 Azure Web App 的使用过程中,遇到一个并不直观、但在实际生产环境中很容易遇到的问题:Web App 本身运行正常,但在 Azure Portal 中点击 Advanced Tools(Kudu)时,页面却无法访问。
报错页面如下:
应用可以正常对外提供服务,但用于诊断和排障的 Advanced Tools 却无法打开。那么,这个问题究竟是如何产生的?
问题解答
从表面现象来看,第一时间很容易联想到以下几种可能性:
- Advanced Tools 服务异常
- Azure 平台工具问题
- Portal 的偶发性故障
然而,在对 Web App 的配置进行检查后发现,这些直觉判断都并非问题的根源。问题并不在 Azure 平台或 Web App 本身,而是与 Azure App Service 的网络访问模型有关。
一个经常被忽略的事实:
Advanced Tools(Kudu)并不等同于主 Web App 站点,它有自己独立的访问入口和网络规则。
在这个问题中,Web App 配置了网络访问限制,公共网络访问已被禁用。然而,Advanced Tools 实际上运行在一个独立的站点(SCM / Advanced Tools Endpoint)。当网络策略中没有为kudu站点单独放行时,请求会在网络层被直接阻断,最终表现为 Advanced Tools 页面无法访问。
查看Web App的网络配置,可见Advanced tool site的配置为Deny, 并且沿用了主站点的规则( Use main site rules)

这也正是问题产生的关键原因。当为 Kudu(Advanced Tools site)单独配置合适的网络访问规则后,Advanced Tools 站点即可恢复正常访问。
参考资料
Azure 应用服务访问限制:https://docs.azure.cn/zh-cn/app-service/overview-access-restrictions