如何让Azure API Management策略对Azure App Service路由生效?
问题原因与解决方案
为什么直接访问App Service不会触发APIM限流策略
Azure API Management(APIM)的策略仅对通过APIM网关转发的请求生效。当你直接访问App Service的URL时,请求完全绕过了APIM网关,自然不会触发在APIM中配置的任何策略(包括限流)。
让限流策略生效的两种方案
方案1:限制App Service仅允许APIM访问(推荐)
通过配置App Service的访问限制,拒绝所有非APIM来源的请求,强制所有流量必须经过APIM,这样限流策略就能覆盖所有合法请求:
- 登录Azure门户,进入你的App Service资源
- 左侧导航选择 网络 > 访问限制
- 点击 添加规则,设置允许的IP范围:
- 先获取APIM的出站IP地址:进入APIM资源的概述页面,复制页面中的“出站IP地址”列表
- 将这些IP地址逐一添加到App Service的允许规则中
- 设置默认规则为 拒绝,这样除了APIM的IP外,其他所有直接访问都会被拦截
方案2:在App Service中独立实现限流
如果业务需要保留App Service的直接访问权限,那么需要在Web API代码中自行实现限流逻辑:
- 对于ASP.NET Core项目,可以使用官方的
Microsoft.AspNetCore.RateLimiting中间件,在Program.cs中配置限流规则 - 或者使用Azure App Service自带的限流功能(在App Service的性能 > 限流中配置),不过该功能的限流规则相对基础,无法实现APIM那样复杂的策略
内容的提问来源于stack exchange,提问作者Nataliya
相关产品推荐
相关产品推荐

