Azure应用服务健康检查触发HTTP 404错误问题排查
故障原因分析
1. Azure健康检查探针配置问题
- 路径匹配规则不一致:Episerver路由对大小写、末尾斜杠敏感,比如你配置的探针路径是
/health但实际应用路由是/health/,手动访问时浏览器会自动补全或跟随重定向,而Azure健康检查探针默认不会跟进3xx重定向,会直接将跳转后的请求记为404 - 探针请求特征被拦截:Episerver或Azure WAF可能配置了请求过滤规则,Azure默认探针的User-Agent为
HealthCheck/1.0,如果规则拦截了该UA的请求,会直接返回404;手动浏览器访问携带的是正常浏览器UA,不会被拦截 - 内部路径访问权限限制:你提到该路径为内部URL,如果应用配置了IP访问限制,仅允许内网IP段访问该路径,Azure健康检查探针的出口IP属于Azure公有云IP段,未加入白名单时会被拦截返回404
2. Episerver应用配置问题
- 路由优先级冲突:Episerver内容路由优先级高于自定义MVC路由,如果健康检查路径刚好和某个未发布的Episerver内容页URL冲突,匿名的探针请求访问时,Episerver会因找不到已发布内容返回404,你手动访问时大概率已登录后台账号,有权限访问未发布内容所以返回正常
- 端点权限未开放:健康检查端点如果配置了身份验证要求,手动访问时浏览器携带了已登录的Cookie可以正常访问,无身份凭证的探针请求会触发权限校验返回404
- URL重写规则拦截:如果配置了针对路径的重写规则(比如强制HTTPS跳转、路径改写),探针未开启重定向跟随的情况下会访问到不存在的路径,返回404
3. 快速排查方案
- 在应用访问日志中筛选对应404请求的完整信息,包括请求来源IP、User-Agent、完整请求路径,确认异常请求是否确实来自Azure健康检查探针
- 用接口调试工具模拟探针请求:关闭自动重定向、不携带Cookie、设置UA为
HealthCheck/1.0,访问健康检查路径,复现404后定位具体拦截规则 - 检查Azure应用服务健康检查配置,确认路径完全匹配,根据需要开启重定向跟随,同时将Azure健康检查IP段加入应用的IP访问白名单
内容的提问来源于stack exchange,提问作者Andvik
相关产品推荐
相关产品推荐

