Apache可通过mod_proxy_balancer的loadfactor属性实现权重负载均衡,配合Include指令导入独立节点配置文件,并需启用对应模块、设置lbmethod调度算法及重启服务生效。

Apache 本身不原生支持“按权重分发请求”的代理负载均衡功能(如 Nginx 的 weight= 参数),但可以通过 mod_proxy_balancer + BalancerMember 的 loadfactor 属性实现类似效果。而 Include 指令的作用,是将外部配置文件内容文本式插入到主配置中,常用于模块化管理多个后端节点定义。
下面说明如何用 Include 导入含不同权重的代理节点列表,并确保其被正确加载:
✅ 正确启用负载均衡与权重支持
确保已启用必要模块(通常在 httpd.conf 或 mods-enabled/ 中):
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
⚠️ 注意:
loadfactor仅在BalancerMember中有效,且必须配合使用,不能用于普通ProxyPass。
? 将权重节点定义拆分为独立文件(例如 balancer-nodes.conf)
在 Apache 配置目录(如 /etc/apache2/extra/ 或 /usr/local/etc/apache24/)下创建:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
# /etc/apache2/extra/balancer-nodes.conf
<proxy>
BalancerMember http://192.168.1.10:8080 loadfactor=3
BalancerMember http://192.168.1.11:8080 loadfactor=1
BalancerMember http://192.168.1.12:8080 loadfactor=2
ProxySet lbmethod=bytraffic
</proxy>
-
loadfactor是相对权重值(默认为 1),越大承担流量越多; -
lbmethod=bytraffic表示按响应字节数加权调度(也支持byrequests、bybusyness); - 所有
BalancerMember必须在同一balancer://命名空间内。
? 在主配置中用 Include 加载该文件
在你的虚拟主机或主配置块中加入:
Include /etc/apache2/extra/balancer-nodes.conf
<virtualhost>
ServerName app.example.com
ProxyPreserveHost On
ProxyPass "/" "balancer://myapp/"
ProxyPassReverse "/" "balancer://myapp/"
</virtualhost>
✅ Apache 启动时会把
balancer-nodes.conf内容原样展开,等效于直接写在配置里。
? 验证与调试要点
- 运行
apachectl configtest确保语法无误; - 权重生效需搭配
lbmethod,单独设loadfactor不起作用; - 修改后必须重启或重载 Apache(
systemctl reload apache2或apachectl graceful); - 可访问
http://your-server/balancer-manager(需显式启用mod_status和授权)查看实时权重、请求计数与状态。
❌ 常见误区提醒
-
Include不是“动态变量替换”,它只是静态包含文本,不解析变量或执行逻辑; - 不能在
Include文件里写或Listen等全局指令(除非上下文允许); -
loadfactor值建议为整数,避免小数(部分旧版本 Apache 解析异常); - 若节点带健康检查,可追加
ping=5、retry=60等参数增强可用性。
不复杂但容易忽略。










