App Service槽健康检查显示0%,但浏览器及curl返回200,原因何在?
App Service槽健康检查显示异常但手动访问正常的原因
以下是几种常见的导致该问题的情况:
- IP限制拦截健康检查请求:App Service的健康检查请求从Azure内部IP发起,而非公网IP。若应用配置了IP允许列表,仅放行外部公网IP,内部健康检查请求会被拦截返回非200状态码,但公网手动访问正常。
- 请求头规则不匹配:Azure健康检查请求会携带特定标识
User-Agent: Azure App Service Health Check。若应用代码或WAF规则对请求头/UA有验证逻辑,拒绝该UA的请求,会导致健康检查失败,而手动请求的UA不同,可正常返回200。 - 重定向未被识别:若根路径"/"实际返回3xx重定向(如跳转到"/home"或带尾斜杠的路径),App Service健康检查默认不跟随重定向,仅判定初始请求状态码是否为200。手动访问时浏览器会自动处理重定向显示最终200页面,但健康检查会判定请求失败。
- 实例内部访问异常:槽的应用实例可能存在本地访问问题,比如应用绑定
127.0.0.1而非0.0.0.0,导致实例内部发起的健康检查请求无法访问应用,但外部通过负载均衡可正常路由。另外,实例处于重启、CPU/内存资源耗尽状态时,也可能导致内部健康检查请求超时或失败。 - 身份验证拦截请求:若槽开启了Easy Auth(应用服务身份验证),健康检查请求不携带任何认证凭据,会被返回401/403状态码。而手动访问时你已完成登录认证,因此能正常返回200。
内容的提问来源于stack exchange,提问作者Grigory
相关产品推荐
相关产品推荐

