Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
xampp需启用mod_proxy_balancer、lbmethod_byrequests、slotmem_shm三模块并配置balancer://集群,配合hosts解析和proxypass/proxypassreverse实现负载均衡,缺一将导致503错误。

ProxyPass 和 ProxyPassReverse 本身不支持负载均衡;必须启用 mod_proxy_balancer 并配合 balancer:// 协议才能实现多台后端服务器的分发。
确认所有必要模块已启用
XAMPP 默认不启用负载均衡相关模块,仅开启 mod_proxy 和 mod_proxy_http 是不够的。漏掉任一关键模块会导致配置静默失败或 503 错误。
-
mod_proxy_balancer.so:提供balancer://协议支持 -
mod_lbmethod_byrequests.so(或bytraffic/bybusyness):决定调度算法,否则BalancerMember无法生效 -
mod_slotmem_shm.so:共享内存管理,mod_proxy_balancer依赖它,XAMPP 低版本常默认禁用
打开 XAMPP\apache\conf\httpd.conf,检查并取消以下行前的 #:
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 LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
改完务必运行 httpd -t 验证语法,否则 Apache 启动会失败。
用 balancer:// 定义集群,别写死单个地址
负载均衡不是靠多个 ProxyPass 实现的,而是先定义一个逻辑集群(balancer://mycluster),再把后端节点注册进去。直接写 ProxyPass / http://192.168.1.10/ 永远只走一台。
在 httpd-vhosts.conf 中添加类似配置:
<virtualhost>
ServerName app.local
ProxyRequests Off
<pre class="brush:php;toolbar:false;"><Proxy balancer://mycluster>
BalancerMember http://192.168.1.10:8080 route=node1
BalancerMember http://192.168.1.11:8080 route=node2
ProxySet stickysession=ROUTEID|JSESSIONID
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
注意点:
-
route=值需与后端应用实际返回的 session cookie(如JSESSIONID=node1)匹配,否则粘性会失效 -
stickysession参数必须显式设置,否则每次请求都可能跳转到不同节点,登录态丢失 - 后端服务端口(如
:8080)不能省略,即使它是默认 HTTP 端口,Apache 不自动补全
Windows hosts 文件和虚拟主机必须联动
浏览器访问 app.local 能命中这个 <virtualhost></virtualhost> 的前提是系统能解析该域名。XAMPP 不接管 DNS,必须手动配 hosts。
以管理员身份编辑 C:\Windows\System32\drivers\etc\hosts,追加:
127.0.0.1 app.local
常见错误:
- 写成
localhost app.local—— 必须是 IP 地址开头 - 忘记取消
httpd.conf中#Include conf/extra/httpd-vhosts.conf的注释,导致整个httpd-vhosts.conf不加载 -
ServerName写错大小写或拼写(如App.Local),而hosts里是小写,Windows 下虽不敏感,但 Apache 匹配时严格区分
调试时重点看 Apache error.log 和响应头
负载均衡配置出问题,通常不会报明显错误,而是请求卡住、返回 503 或始终打到同一台机器。此时别只刷浏览器,盯住日志:
- 日志路径:
XAMPP\apache\logs\error.log,搜索proxy、balancer、fail - 用
curl -I http://app.local查看响应头,确认X-Forwarded-For和X-Balancer-Worker是否出现(后者需开启mod_headers并手动添加) - 如果某台后端宕机,
BalancerMember默认会标记为down并跳过,但不会通知你——得靠日志里的failed to connect判断
最易被忽略的是 mod_slotmem_shm 缺失导致 balancer:// 协议完全不可用,此时 httpd -t 不报错,但 Apache 启动后所有 balancer:// 请求均返回 503,且 error.log 里几乎无提示。










