非常感谢马丁·格罗茨克。Tomcat日志很好。我在 msm 的日志中发现了一些东西。
Nginx 只代理一个配置为 cookies=“false” 的tomcat
,
第一次请求,msm 没有将会话备份到 memcached,
下一个请求在 url 中使用 jsessionid,在 tomcat 中找到会话,msm 现在备份会话。
如果 nginx 代理了两个配置为 cookies=“false” 的 tomcat,
第一次请求,nginx 代理到 TomcatA,登录成功,响应 sessionid(TomcatA),但是 msm 没有将它备份到 memcached,
下一个请求,nginx 代理到 TomcatB sessionid(TomcatA) 在 url 中,tomcat 或 memcached 中没有 session,所以 TomcatB 创建一个新的 session,
第三个请求,使用 sessionid(TomcatB 的新 session) 到 TomcatA 的 nginx 代理。
因此,它始终保持并共享两个tomcat 之间的会话。
解决方法是删除tomcat中cookies=“false”的配置。