xampp默认不启用负载均衡,需手动启用mod_proxy、mod_proxy_http、mod_proxy_balancer、mod_lbmethod_byrequests、mod_slotmem_shm五个模块,并配置proxyrequests off、balancermember、stickysession及balancer-manager访问权限。

XAMPP 自带的 Apache 默认不启用负载均衡能力,直接改 httpd.conf 加几个 ProxyPass 就跑不起来——缺模块、缺路由控制、缺健康检查,三者缺一不可。
确认 mod_proxy 及关联模块已加载
Windows 下 XAMPP 的 Apache 模块默认大多被注释掉。光开 mod_proxy.so 不够,必须连带启用以下 5 个:
mod_proxy.so-
mod_proxy_http.so(HTTP 后端必需) -
mod_proxy_balancer.so(核心负载调度) -
mod_lbmethod_byrequests.so(默认轮询算法) -
mod_slotmem_shm.so(共享内存支撑会话保持)
打开 XAMPP\apache\conf\httpd.conf,搜索并去掉这些行前的 #;漏掉任意一个,启动时会报错 Cannot load modules/mod_proxy_balancer.so into server 或后续 balancer:// 语法不识别。
后端服务必须监听不同端口且可直连
XAMPP 本身不带多个 Tomcat,所以“多端口”得靠你自己起两个本地服务,比如:
- Tomcat1:
http://localhost:8081 - Tomcat2:
http://localhost:8082
不能用相同端口(如都 8080),也不能依赖 localhost 域名解析失败(某些 Windows hosts 配置下 127.0.0.1 更稳)。测试前务必手动浏览器访问这两个地址,确保返回页面——Apache 的 BalancerMember 不做存活探测,挂了只会 503。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
stickysession 必须匹配后端 Session ID 格式
想让同一用户始终打到同一台后端(比如维持登录态),得配 ProxySet stickysession=,但值不是随便写的:
- Tomcat 默认用
JSESSIONID,所以应写stickysession=JSESSIONID - 如果后端用了 Spring Session 或自定义 Cookie 名,比如叫
MYSESSID,这里就必须严格一致 - 若还启用了路径重写(如
jsessionid写在 URL 里),得额外加nofailover=On防止因重定向丢失路由
配错会导致会话漂移,用户反复登出;不配则每次请求随机分发,状态无法延续。
balancer-manager 页面需显式放行才可访问
很多人配完以为好了,但 http://localhost/balancer-manager 返回 403。原因在于 XAMPP 默认禁用该管理界面,必须在 httpd.conf 或虚拟主机段里加明确授权:
<location>
SetHandler balancer-manager
Require local
</location>
注意:Require local 允许本机访问;若要局域网其他机器看,改成 Require ip 192.168.1.0/24;别用过时的 Order Deny,Allow,XAMPP 2.4+ 已弃用该语法。
最常被忽略的是模块加载顺序和 ProxyRequests Off ——漏掉这行,Apache 会把自己变成开放代理,被扫出来立刻沦为肉鸡。










