对于我们的环境,我们应该检查 Apache httpd 服务器的可用性。我们不想在 documentRoot 中为其创建空白页面,也不能使用 mod_status(出于安全原因)。
是否有任何选项可以配置 apache 以在特定 URL 上始终回答 HTTP 200?例如:
<location /heart_beat.html>
Return 200
</location>
Apache 2.2(mod_ssl、mod_proxy、虚拟主机)
答案1
显而易见的解决方案是在您的配置中创建一个别名,并将您的空状态页面放在您的文档根目录之外,这样它就不会与您的 CMS 或网站管理员可能创建的 URL 冲突。
# Unlikely URL used by loadbalancer for polling
Alias /sdfjkleruiwbns/dfasdfhasdfjkggfhjfgasqeuryuwerpvbbv/ /var/www/loadbalancer/
关于负载均衡器的轮询:
负载均衡器会定期轮询后端服务器。轮询结果将决定后端服务器是否健康,负载均衡器是否会将请求发送到给定的服务器。
支持的最基本的监控是简单的 TCP 连接检查,以确定服务是否正在侦听连接。通常,该测试并非 100% 可靠,因为当实际应用程序无响应时,侦听器仍处于活动状态的情况并不少见。
更好的检查 Web 服务的方法是检索实际的 URL,即http://server.local/some/path/page.htm当可以检索该 URL 时,负载均衡器认为该节点处于活动状态。
动态健康页面比静态 HTML 更好,但可能需要更多自定义功能/支持。如果一切正常,则显示绿灯并返回 HTTP 状态 200,否则将发送 HTTP 状态 503 和橙色或红色灯。然后,健康页面通常会检查是否满足运行应用程序所需的所有条件,例如,它可以在临时空间中写入、连接到后端数据库、许可证有效、尚未达到最大队列长度等。当然,只要轮询该健康页面不会导致有效的拒绝服务……
答案2
mod_alias 可以返回 204,即空白页面。
RedirectMatch 204 /heart_beat.html