首页 > 解决方案 > AWS ALB 运行状况检查 404

问题描述

我有一个 ALB,目标组中有 2 个目标。但是我的健康检查不能正常工作。两者都在显示

"Health checks failed with these codes: [404]"

我对健康检查路径的设置是:

/var/www/html/generic/website.com/healthcheck.php

如果我nano /var/www/html/generic/website.com/healthcheck.php在 ec2 实例上执行此操作,它会显示这应该是我认为需要的所有健康检查。

<?php
header("Status: 200");
?>

我仔细检查了 AZ 和 ALB 与 2 个实例在同一个和子网中。此外,当我检查我的 apache 日志时,这就是我所看到的:

"GET /var/www/html/generic/website.com/healthcheck.php HTTP/1.1" 404 196 "-" "ELB-HealthChecker/2.0"

我做错了什么导致健康检查失败?

标签: amazon-web-servicesapacheamazon-ec2aws-load-balanceraws-alb

解决方案


似乎您不能使用基于名称的虚拟主机进行健康检查。所以在我的 vhost 文件中,我添加了以下代码。它的作用是,如果有人直接访问您的 ip,它会给他们一个 404,但如果他们访问您的 ip/healthcheck,那么它将显示 200,这是 ALB 需要的。然后在你的路径中放 /healthcheck。

<VirtualHost *:80>
  ServerName default
  RewriteRule "/healthcheck" - [R=200]
  Redirect 404 /
</VirtualHost>
<VirtualHost _default_:80>
  RewriteRule "/healthcheck" - [R=200]
  Redirect 404 /
</VirtualHost>

推荐阅读