Apache mod_proxy_hcheck 默认基于HTTP状态码健康检查,2xx/3xx为健康,4xx/5xx或超时为不健康;需Apache≥2.4.49、启用模块、配置hcmethod/hcuri等参数,且需排查网络与日志问题。
apache mod_proxy_hcheck 默认就是基于 http 状态码做健康检查的——只要后端返回 2xx 或 3xx 状态码,就认为健康;4xx、5xx 或超时/连接失败则视为不健康。不需要额外配置表达式,也不依赖 proxyhcexpr。
但要注意:这是“默认行为”,不是“开箱即用”。你仍需正确启用模块、配置探测参数,并确认它确实在按状态码工作。
✅ 启用并验证基础健康检查能力
- 确保 Apache ≥ 2.4.49(旧版本不支持
hcuri等关键参数) - 加载模块(若未启用):
LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so
- 验证是否加载成功:
httpd -M | grep proxy_hcheck
有输出即表示可用。
✅ 在 BalancerMember 中启用状态码检查
只需指定 hcmethod 和 hcuri,不加 hcexpr 就自动走状态码逻辑:
<Proxy "balancer://myapp">
BalancerMember http://10.0.1.10:8080 \
hcmethod=GET \
hcuri=/health \
hcinterval=10 \
hcfails=3 \
hcpasses=2
</Proxy>说明:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
-
hcmethod=GET:用 GET 请求探测 -
hcuri=/health:请求后端的/health路径(该接口应返回 200 表示正常) -
hcinterval=10:每 10 秒探一次 -
hcfails=3:连续 3 次非 2xx/3xx 响应才标记为 Down -
hcpasses=2:连续 2 次 2xx/3xx 才恢复为 Up
⚠️ 注意:如果后端
/health返回 200 但 body 是{"alive":false},默认状态码检查仍会判为健康。要避免这种“假健康”,才需要上ProxyHCExpr做内容判断。
✅ 常见问题排查
节点一直显示 Down,但手动 curl /health 返回 200?
检查 Apache 是否能访问该地址(防火墙、SELinux、反向 DNS 解析等)
查看错误日志:tail -f /var/log/httpd/error_log,搜索hcheck或proxy_hcheck状态没变化,Succ/Fail 计数不动?
确认hcinterval已生效(太短可能被限频,太长看不出效果)
确保BalancerMember行末尾没有遗漏反斜杠\(多行配置时必需)-
想让 4xx 也算健康?比如 404 表示服务存在但路径不对
默认不支持。必须用ProxyHCExpr自定义逻辑,例如:ProxyHCExpr ok %{hc resp status} == 200 || %{hc resp status} == 404然后在
BalancerMember中引用:hcexpr=ok
不复杂但容易忽略。

















