使用 nginx 基于 cookie 的粘性会话

使用 nginx 基于 cookie 的粘性会话

目前,我们使用 apache2 作为前端,使用 tomcat 作为后端。我们正在使用mod_proxy_balancerAJP。我们还通过 JSESSIONID cookie 使用 stickysession:

<Proxy balancer://backend>
     BalancerMember ajp://127.0.0.1:8008 min=10 max=100 ping=5 connectiontimeout=40 ttl=60   retry=20 route=node-1
     BalancerMember ajp://127.0.0.1:8009 min=10 max=100 ping=5 connectiontimeout=40 ttl=60 retry=20 route=node-2
     ProxySet lbmethod=byrequests timeout=30
     ProxySet stickysession=JSESSIONID|jsessionid nofailover=Off
</Proxy>

并使用 jvmRoute 参数将web.xml尾部添加到 JSESSIONID cookie:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="node-1">

我们希望切换到使用 nginx 作为前端。到目前为止,我还没有找到任何使用 nginx 执行相同会话亲和性操作的方法。有解决方案吗?我们没有使用会话复制,因此将顺序请求发送到同一后端至关重要。

答案1

谷歌建议nginx 有一个树外模块可以实现这个。我从来没有用过它,因为我认为粘性会话是魔鬼的杰作,但如果必须实现它,它将是我使用的第一个选项。

相关内容