apache mod_proxy_balancer需结合proxyerroroverride、errordocument和自定义logformat实现错误页统一与代理日志增强:启用proxyerroroverride接管502/503/504等错误,绑定品牌化errordocument路径并排除其被代理;通过含%{balancer_worker_route}e、%{ms}t等字段的proxylog格式记录后端路由、延迟等关键指标,并建议开启balancer-manager界面及failonstatus自动隔离异常节点。
apache mod_proxy_balancer 本身不直接生成错误页或访问日志,但可通过组合标准模块实现:用 proxyerroroverride + errordocument 统一接管后端异常页面,用自定义 logformat 记录代理级请求详情(含后端延迟、状态、路由等)。关键不在“单独配置 balancer”,而在整体代理上下文中补全日志与错误控制。
配置自定义错误页(502/503/504 等)
负载均衡场景下,后端宕机或返回网关错误时,默认显示 Apache 原生提示。要统一为品牌化页面,需三步闭环:
-
启用错误接管开关:在虚拟主机中添加
ProxyErrorOverride On(Apache 2.4.47+ 可加限定,如ProxyErrorOverride On 502 503 504) -
显式绑定每个状态码:例如
ErrorDocument 502 /errors/gateway-down.htmlErrorDocument 503 /errors/service-unavailable.htmlErrorDocument 504 /errors/timeout.html
路径必须以/开头,且文件真实存在于DocumentRoot下(如/var/www/html/errors/) -
排除错误页路径,防止被代理:在
ProxyPass规则之后、之前都可,但必须存在:ProxyPass /errors/ !
同样建议排除静态资源路径:ProxyPass /static/ !、ProxyPass /css/ !
记录详细的代理访问日志
默认 access log 不体现后端响应时间、路由节点、失败原因等关键信息。需自定义日志格式并启用必要模块:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
-
启用依赖模块:
a2enmod headers logio(Ubuntu/Debian)或确认mod_headers.so、mod_logio.so已加载 -
定义含代理元数据的日志格式:
LogFormat "%h %l %u %t \"%r\" %U %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{ms}T %{ms}D %{BALANCER_WORKER_ROUTE}e %D" proxylog
其中:
•%{ms}T:总耗时(毫秒),含网络往返与后端处理
•%{ms}D:Apache 自身处理耗时(不含后端)
•%{BALANCER_WORKER_ROUTE}e:实际转发到的后端节点标识(如node1)
•%D:微秒级总耗时(更精确) -
应用日志格式并指定文件:
CustomLog ${APACHE_LOG_DIR}/balancer-access.log proxylog
补充可观测性增强项
仅靠日志还不够,建议同步开启以下功能提升排障效率:
-
启用 balancer-manager 界面:
<location><br> SetHandler balancer-manager<br> Require ip 192.168.1.0/24<br></location>
可实时查看各节点连接数、失败次数、权重、是否启用、最后健康检查时间 -
对后端异常主动隔离:在
ProxyPass行末加failonstatus=503,429,让返回这些状态码的节点自动标记为 down,避免持续转发 -
错误页中嵌入调试信息(可选):若使用 SSI 或 PHP 动态页,可在开发环境输出
%{BALANCER_WORKER_ROUTE}e或%{ENV:proxy_error}e,辅助定位问题节点









