Apache反向代理实现会话保持需启用mod_proxy_balancer等模块,通过IP哈希或Cookie(如EXCALIDRAW_SESSION)绑定请求至固定后端,并配置健康检查(ping=5)与proxy-status监控。
apache 反向代理配置会话保持,核心是让同一用户的请求始终转发到同一台后端服务器,避免登录态丢失、实时协作中断或状态不一致等问题。这在 excalidraw、grafana 或自建 web 应用集群中尤为关键。
启用 mod_proxy_balancer 和相关模块
确保以下模块已加载(通常在 /etc/apache2/mods-enabled/ 或 conf.modules.d/ 中):
- mod_proxy(基础代理支持)
- mod_proxy_http(HTTP 协议转发)
- mod_proxy_balancer(负载均衡与会话保持基础)
- mod_session 和 mod_headers(可选,用于 Cookie 操作)
在 Ubuntu/Debian 上可执行:
a2enmod proxy proxy_http proxy_balancer session headers
然后重启 Apache。
使用 IP 哈希实现无 Cookie 会话保持
适合客户端 IP 稳定、且不介意“同一局域网用户被固定到同一节点”的场景(如内网白板系统):
<Proxy balancer://mycluster><br> BalancerMember http://192.168.1.10:3000 route=server1<br> BalancerMember http://192.168.1.11:3000 route=server2<br> ProxySet lbmethod=byrequests<br> ProxySet stickysession=ROUTEID<br></Proxy><br><br><Location "/><br> ProxyPass balancer://mycluster/<br> ProxyPassReverse balancer://mycluster/<br> Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/; HttpOnly; Secure" env=BALANCER_ROUTE_CHANGED<br></Location>
注意:lbmethod=byrequests 配合 stickysession=ROUTEID + 后端应用返回含 route=xxx 的 Cookie,是最常用可靠方式。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
基于 Cookie 的显式会话绑定(推荐用于 Excalidraw 等前端无状态服务)
若后端服务(如 Excalidraw 容器)本身不生成路由标识,可在 Apache 层注入并识别自定义 Cookie:
- 用 mod_headers 设置初始 Cookie(如 JSESSIONID 或 EXCALIDRAW_SESSION)
- 用 stickysession 关联该 Cookie 名称,例如:stickysession=EXCALIDRAW_SESSION
- 确保后端响应中包含该 Cookie,且路径(Path=/)和安全标记(Secure; HttpOnly)正确
示例片段:
Header edit Set-Cookie "(^EXCALIDRAW_SESSION=.*$)" "$1; Path=/; Secure; HttpOnly"<br>ProxyPass / balancer://mycluster/ stickysession=EXCALIDRAW_SESSION
配合健康检查提升稳定性
会话保持必须建立在服务可用基础上。启用自动故障剔除:
- 添加 ping=5 到 BalancerMember,表示每 5 秒探活
- 设置 status=+H 标记为热备节点(可选)
- 启用 proxy-status 页面便于运维查看当前连接与会话分布
完整成员行示例:
BalancerMember http://192.168.1.10:3000 route=server1 ping=5 status=+H

















