Azure App Service通过VNet集成访问API被阻,Kudu控制台却正常
问题原因及解决方案
核心原因是请求发起的主体不同:
- Kudu控制台中的请求,是由前端App Service的服务器(处于VNet子网
10.0.0.0/24内,IP为10.0.0.x)直接发起的,通过VNet内网解析后端域名到私有IP10.0.1.x,符合后端的访问规则,所以能正常返回内容。 - 前端应用通过Axios发起的请求,实际是由访问前端的用户浏览器(处于公网环境)发起的。浏览器会直接解析后端域名的公网IP,请求从公网IP发出,被后端的“阻止公网访问”规则拦截,因此返回
403 IP FORBIDDEN。
解决方法
方法1:通过前端App Service做反向代理
配置前端App Service将后端请求转发到内网地址,让请求从前端App Service服务器(VNet内)发起:
- 在前端App Service的
web.config(Windows环境)或.htaccess(Linux环境)中添加反向代理规则,将/api这类后端请求路径转发到https://[backend-app].azurewebsites.net。 - 修改前端代码,将请求路径改为相对路径(比如
/api/xxx),而非直接写后端的完整域名。
方法2:使用Azure服务实现内网访问路由
如果需要更复杂的路由或安全控制,可选择:
- Azure Front Door:配置Front Door作为前端和后端的统一入口,让Front Door通过私有端点访问后端,前端用户通过Front Door调用后端接口。
- Azure API Management:将后端接口发布到APIM,通过APIM的VNet集成访问后端私有端点,前端调用APIM的公开地址即可。
额外检查点
- 确认前端App Service的VNet集成设置为**“路由所有出站流量到虚拟网络”**,确保服务器端发起的所有请求都走VNet内网。
- 排查前端代码是否硬编码了后端的公网地址,若有则替换为相对路径或代理路径。
内容的提问来源于stack exchange,提问作者Martijn Oele
相关产品推荐
相关产品推荐

