【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"

功能,Service,检查,应用 · 浏览次数 : 76

小编点评

**问题描述:** App Service健康检查路径使用 HTTPS Only 设置为 Off,但在页面上始终提示“实例运行不正常”。 **分析:** 当使用 HTTPS 时,健康检查路径直接返回 200,不会进行 307 重定向。因此, Health Check 发送请求时使用的是 HTTPS,并在连接过程中发生转换。 **问题解决:** 1. **更改 HTTPS Only 设置:** - 将 `HTTPS Only` 设置为 `On`。 - 这将允许 Health Check 发送 HTTPS 请求,并不会进行 307 重定向。 2. **注释掉 app.UseHttpsRedirection():** - 如果使用 `app.UseHttpsRedirection()`,则 Health Check 的发送会使用 HTTP,导致 307 重定向。 - 注释掉 `app.UseHttpsRedirection()` 可以解决这一问题。 3. **启用 HTTPS 重定向,禁用 HTTPS Only:** - 将 `HTTPS Only` 设置为 `On`。 - 这将允许 Health Check 发送 HTTPS 请求,并使用 HTTPS 重定向机制进行连接。 - 注释掉 `app.UseHttpsRedirection()`。

正文

问题描述

为App Service配置了健康检查,单独访问Health Check Path的路径,返回代码为200。但为什么在App Service的页面上,一直提示“实例运行不正常”呢?

 

问题解答

通过查看Health Check Path发送的请求,当使用HTTPS的时候,直接返回200,而当使用HTTP访问时,会先进行307跳转为HTTPS,然后返回200。 而运行状态检测为正常的返回范围为 200 ~ 299。所以,如果返回302就会导致实例状态被判断为不正常。

那为什么Health Check会通过HTTP方式访问而且会发生HTTPS的转换呢? 

第一点:这是因为在App Service的配置页面中,设置了HTTPS Only 为Off,也就是说:当前App Service可以通过HTTP的方式访问。

第二点:在应用代码 startup.cs 中启用了中的 app.UseHttpsRedirection()

 

因为第二点的存在,所以导致了HTTP 向 HTTPS的跳转。 如果能够注释掉 app.UseHttpsRedirection(),第一点就不需要修改。 那如果第二点修改代码不容易,就需要修改第一点【 HTTPS Only设置为On】

 

当修改HTTPS Only为On,只允许Health Check发送的请求为HTTPS后,问题解决。运行状态检测结果为正常!

 

参考资料

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

  • 运行状况检查不遵循 302 重定向。
  • 每小时最多更换一个实例,每个应用服务计划每天最多更换三个实例。
  • 如果运行状况检查的状态为 Waiting for health check response,则检查可能会由于 HTTP 状态代码 307 而失败,如果已启用 HTTPS 重定向但禁用 HTTPS Only,就可能发生这种情况。

 

[END]

 

与【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"相似的内容:

【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"

问题描述 为App Service配置了健康检查,单独访问Health Check Path的路径,返回代码为200。但为什么在App Service的页面上,一直提示“实例运行不正常”呢? 问题解答 通过查看Health Check Path发送的请求,当使用HTTPS的时候,直接返回200,而当

【Azure 应用服务】 在App Service中无法上传证书[Private Key Certificates (.pfx)],导入Azure Key Vault中的证书也无法成功

问题描述 在App Service的TLS/SSL settings页面,切换到Private Key Certificates (.pfx),通过Import Key Vault Certificate方式上传证书,提示成功,实际没有上传成功。通过Upload Certificate的方式上传证书

【Azure 应用服务】登录App Service 高级工具 Kudu站点的 Basic Auth 方式

问题描述 从Azure App Service的页面中,直接跳转到高级管理工具Kudu站点(https://.scm.chinacloudsites.cn/)时,可以自动使用AAD用户(即登录Azure门户的订阅账号),同时,也可以使用App Servi

【Azure 应用服务】在App Service中新建WebJob时候遇见错误,不能成功创建新的工作任务

问题描述 在Azure App Service界面上,添加新的Web Job(工作任务)时,一直添加失败。无详细错误提示,在App Service的Activity Logs(活动日志)中,根本没有添加失败的任何操作记录,这是什么情况呢? Adding WebJob: Failed to add t

【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值

问题描述 App Service中,如何通过 Application Setting 来配置 Key Vault中的值呢? 问题解答 首先,App Service服务可以直接通过引用的方式,无需代码的情况下,为Application Setting中的Key配置Key Vault中保存的值。参考官方

【Azure 应用服务】App Service 默认页面暴露Tomcat版本信息,存在安全风险

问题描述 在创建Azure App Service时,服务端的配置使用Java 8 + Tomcat 8.5。默认的根目录页面显示出App Service Tomcat版本信息,存在一定的安全隐患。 如何来避免这个问题呢? 问题解答 因为在初始创建App Service时,Azure会根据所选Sta

【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数

问题描述 在Azure App Service for Windows的环境中,部署.NET应用,其中使用了 SAP NetWeaver RFC函数 (需要加载 sapnwrfc.dll)。详细的错误为: “System.DllNotFoundException: Unable to load DL

【Azure 应用服务】App Service for Container 无法拉取Docker Hub中的镜像替代方案

问题描述 创建App Service Container服务,选择从Docker Hub中获取appsmith/appsmith-ce 镜像(https://www.appsmith.com/ & https://hub.docker.com/r/appsmith/appsmith-ce/tags

【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改

问题描述 昨天的博文中(https://www.cnblogs.com/lulight/p/17099179.html)介绍了使用Python SDK 来获取App Service的访问限制信息,那么如何调用REST API来实现呢? 问题解答 如大家所知,Azure 不管是SDK, 门户UI,或者

【Azure 应用服务】当在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢?

问题描述 在Azure App Service的门户上 Log Stream 日志无输出,需要如何操作让其输出Application Logs呢? 如下图所示: 问题解答 请注意,上图中提示说:Application logs are switched off. You can turn them