apache基础后端健康检查需启用mod_proxy_hcheck模块(仅2.4.33+支持),配置hcmethod=head、hcuri=/health、hcinterval=10、hcfail=3、hcpass=2等参数,并叠加retry=60、failonstatus=500,502,503,504等被动策略,否则默认不主动探测。

确认版本与启用必要模块
健康检查功能从 Apache 2.4.33 开始支持,低于该版本(如 2.4.32)即使写入相关参数也完全无效,且无报错提示。
需确保以下模块已加载:
- mod_proxy
- mod_proxy_balancer
-
mod_proxy_hcheck(必须启用:执行
a2enmod proxy_hcheck或在配置中添加LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so)
配置主动探测参数
在 <proxy></proxy> 块内,为每个 BalancerMember 添加探测规则。推荐使用轻量的 HEAD 方法:
- hcmethod=HEAD:避免触发业务逻辑和传输响应体
-
hcuri=/health:指向后端真实暴露的健康端点(例如 Spring Boot 的
/actuator/health),不能是 Apache 自身路径 - hcinterval=10:每 10 秒探测一次(太短易加重后端压力,太长故障发现滞后)
- hcfail=3:连续 3 次失败才标记为 Down
- hcpass=2:连续 2 次成功才恢复为 Up
示例配置:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
<proxy>
BalancerMember http://192.168.1.10:8080 hcmethod=HEAD hcuri=/health hcinterval=10 hcfail=3 hcpass=2
BalancerMember http://192.168.1.11:8080 hcmethod=HEAD hcuri=/health hcinterval=10 hcfail=3 hcpass=2
</proxy>
补充被动策略增强容错
仅靠主动探测无法覆盖连接建立后卡死、线程阻塞等场景,建议叠加被动机制:
- retry=60:节点被标记 Down 后,60 秒内不调度新请求(不是重试,而是冷却期)
- failonstatus=500,502,503,504:这些状态码直接计入失败计数,加速 Down 判定
- timeout=5:设置代理超时,防止请求长期挂起
验证是否生效
别只依赖 /balancer-manager 页面的状态显示——它只反映最终结果,不展示探测过程。
开启详细日志定位问题:
- 在 Apache 配置中添加:
LogLevel proxy_hcheck:trace8 - 重启服务后,在
error.log中搜索hcheck关键字,确认是否发出探测、收到什么响应、是否匹配预期状态码










