为何我的Azure App Service每隔5分钟就会出现请求错误?
根因说明
这种固定5分钟周期的/error路径请求,90%以上的概率是Azure App Service自带的健康检查功能触发的平台侧探测请求,不属于外部恶意访问,也不是应用代码逻辑自发产生的请求。
你新增/error接口后仍然返回404,大概率是应用内的权限拦截规则(比如Spring Security、自定义拦截器)对该路径做了访问限制,或者接口的请求方法、路径匹配规则和探测请求不匹配导致。
排查验证步骤
- 登录Azure Portal,进入对应App Service的管理页,在左侧菜单栏「监视」分类下找到「健康检查」选项,确认是否开启了该功能,且探测路径配置为
/error - 打开Application Insights的失败请求详情页,查看对应
/error请求的客户端IP属性,如果IP归属Azure基础设施IP段,即可完全确认是平台侧的探测请求 - 查看应用运行日志,确认
/error请求是否已到达应用进程:如果日志中没有对应请求记录,说明请求被App Service前端层直接拦截返回,否则就是应用内的路由/权限配置问题 - 本地启动应用后直接发起
GET http://localhost:端口/error请求,确认是否能正常拿到非404的响应,排除应用本身的接口配置错误
修复方案
- 方案1(推荐):修改健康检查配置,将探测路径改为应用内已有的合法健康探测接口,比如Spring Boot应用默认的
/actuator/health,或者自己开发的返回200状态码的健康接口,不需要专门保留/error作为探测路径 - 方案2:如果需要保留当前健康检查配置,直接在应用的权限框架中放行
/error路径的未认证访问,确保GET请求访问该路径时返回200状态码即可 - 方案3:如果不需要使用健康检查功能,直接在Azure Portal关闭健康检查开关,对应的探测请求会立刻停止
内容的提问来源于stack exchange,提问作者Riven
相关产品推荐
相关产品推荐

