【Azure App Service】为什么启用 Health Check 后应用服务实例持续显示 Unhealthy? - LuBu0505/My-Code GitHub Wiki

问题描述

使用App Service的Health Check功能,导致实例状态Unhealthy,重启也不能解决问题。 image.png

这是什么情况呢?

问题解答

根据Health Check所配置的path,分别使用http和https进行访问,检查请求的响应是否属于 200 ~ 299 之间。 image.png

对于 App Service For Windows 应用,默认情况下,Health Check ping 请求的端口号是 80 (即 http),如果应用代码中会自动执行http 到https的跳转,导致Health Check认为实例不正常,标记为Unhealthy。如果开启了HTTPS Only,则Health Check会通过443端口(https)发送请求。

以.NET Core的代码为例, app.UseHttpsRedirection() 就会自动把http调转到https

可以通过设置App Service只支持HTTPS访问来解决此问题。 image.png

参考资料

使用运行状况检查监视应用服务实例 :https://docs.azure.cn/zh-cn/app-service/monitor-instances-health-check?tabs=dotnet

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!