retry是worker级故障冷却期参数,非重试次数,须在proxypass指令末尾显式声明(如proxypass /app http://192.168.1.10:8080/app retry=15),配合failonstatus=500-599可主动触发冷却,值应据后端健康检查周期合理设定(如5秒探活则设15秒)。
在 apache 虚拟主机中配置 proxypass 的 retry 参数,本质是为后端节点设置“故障冷却期”,不是重试次数,而是节点失败后多久才重新参与负载分发。它直接决定服务中断时的自动恢复速度和稳定性。
明确 retry 是 worker 级参数,必须写在 ProxyPass 指令末尾
retry 不是全局或虚拟主机级指令,必须作为 ProxyPass 的 URL 后参数显式声明。例如:
ProxyPass /app http://192.168.1.10:8080/app retry=15-
ProxyPass /api balancer://mycluster/ retry=10(搭配 mod_proxy_balancer 使用)
若用 balancer://,retry 可设在每个 worker 上(如 route=node1 retry=12),也可统一设在 ProxyPass 行末,后者更常用。
结合 failonstatus 主动识别失败,避免无效等待
仅靠连接超时无法捕获后端返回 500、503 等错误响应。failonstatus 能让 Apache 在收到这些状态码后立即触发 retry 冷却逻辑:
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
ProxyPass / http://backend/ retry=20 failonstatus=500-599- 支持逗号分隔多个码:
failonstatus=500,502,504 - 注意:该判断发生在完整响应接收后,对连接中断类错误无效,需配合
timeout和ping补充
合理设定 retry 值,兼顾恢复速度与后端压力
retry 过短(如 5 秒)可能导致后端尚未完成重启或健康检查就涌入流量;过长(如 300 秒)则影响可用性。建议参考以下原则:
- 后端健康检查周期 × 2~3 倍:如 Spring Boot 默认每 5 秒探活,设
retry=15 - 手动维护窗口预期时长:若计划重启后端约 30 秒内完成,可设
retry=45 - 设为 0 表示永久剔除,仅用于临时隔离问题节点(需人工启用)
验证配置是否生效的两个关键点
配置完别急着重启,先确认两件事:
- 运行
apachectl configtest确保语法无误 - 访问
/balancer-manager(需启用模块并配置对应 Location)查看节点状态栏中的 “Retry” 列,确认显示值与配置一致 - 若使用普通反向代理(非 balancer),可通过日志观察:节点失效后,
error.log中应出现类似proxy: HTTP: disabled connection for (192.168.1.10),且指定秒数后恢复









