Apache-2.2

使用 nginx 基於 cookie 的粘性會話

  • July 6, 2012

目前,我們使用apache2作為前端,tomcat作為後端。我們正在使用mod_proxy_balancer和 AJP。我們還使用 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 執行相同的會話親和性操作。有什麼解決辦法嗎?我們沒有使用會話複製,因此將順序請求發送到同一後端至關重要。

Google建議一個用於 nginx 的樹外模組來執行此操作。我從未使用過它,因為我認為粘性會話是撒旦的工作,但如果我必須實現它,它將是我使用的第一個選項。

引用自:https://serverfault.com/questions/405331