aws-elb 运行状况检查在 302 代码处失败

Aws-elb health check failing at 302 code

您好,我在 7070 端口(非 ssl)上创建了 ALB 侦听器 443 和目标组实例

我可以毫无问题地访问 instanceip:7070,但是 https://elb-dns-name 无法访问。实例运行状况检查也失败,代码为 302

A​​LB 侦听器端口 https 和实例是 http 协议,

当我使用 https://dns-name it redirecting to http://elb-dns-name

浏览时

您在执行 URL 重定向时得到 302,任何 ELB 健康检查都将查找成功代码 200 以使健康检查通过。在 ALB 中,这可以在 ELB 控制台中的健康检查下进行配置。

使用控制台修改目标组的健康检查设置

  1. https://console.aws.amazon.com/ec2/ 打开 Amazon EC2 控制台。
  2. 在导航窗格中的负载平衡下,选择目标组。 Select 目标群体。
  3. 在“运行状况检查”选项卡上,选择“编辑”。
  4. 在编辑目标组页面上,将设置 Success Codes 修改为 302 或根据需要,然后选择保存。

在您的入口控制器中添加此注释,它将修改成功代码并且节点将处于健康状态。

alb.ingress.kubernetes.io/success-codes: 200,404,301,302

我最近 运行 遇到了同样的问题,正如@SudharsanSivasankaran 所建议的那样,我们已经在目标级别编辑了健康检查设置。

但我们保留了仅 200 状态代码,而是更新了路径以直接点击重定向转到的页面。

例如,如果在 instance:80 下托管的网站需要用户登录并将其重定向到 /login 页面,我们需要做的就是在健康检查中添加 /login 路径。

我在 AWS ALB 中遇到了同样的问题(运行状况检查因这些代码而失败:[302]) 配置:

  • Tomcat 9 台服务器仅侦听端口 80
  • ALB 健康检查路径设置为“/my_app_name”,期望从应用程序的根索引页面提供健康检查。

我配置的健康页面预计不会做任何重定向,但 return 只有 HTTP/200 如果成功, HTTP/500 如果不健康。

仅添加 HTTP/302 作为成功代码的建议解决方案绝对错误且具有误导性。 这意味着页面的内部健康检查逻辑不是 运行,因为 HTTP/302 重定向代码只是显示服务器响应的通用能力。

问题出在 Tomcat 服务器本身,在请求“/my_app_name”的情况下,使用 HTTP/302 重定向到“/my_app_name/”( 注意最后的斜杠).

因此将健康检查路径设置为“/my_app_name/”解决了问题,健康检查逻辑 运行 很好并且 HTTP/200 是 returned。