nginx和tomcat(使用memcached会话管理器)config context cookies =“false”

时间:2013-04-02 04:03:43

标签: tomcat cookies nginx jsessionid

我有一些带有memcached会话管理器的tomcat7,使用nginx来代理tomcats,没关系。

但是现在,我们需要支付iphone safari,并通过jsessionid访问网址。 所以在tomcat上下文中添加cookies =“false”。 然后我们将失去会话非常访问(在url中使用jsessionid)。 但是,当使用nginx和一个tomcat服务器,或者直接访问tomcat服务器时,一切都很好。

为什么会这样? 有没有人能解决这个问题。 感谢

1 个答案:

答案 0 :(得分:0)

非常感谢Martin Grotzke。 Tomcat日志很好。 我在msm的日志中找到了一些东西。

Nginx只代理只有一个tomcat ,其配置为cookies =“false”,
第一个请求,msm没有将会话备份到memcached中,
在url中使用jsessionid的下一个请求,在tomcat中查找会话,msm立即备份会话。

如果nginx代理两个tomcats ,配置为cookies =“false”,
第一个请求,nginx代理到TomcatA,登录正常,响应sessionid(TomcatA),但是msm 没有备份到memcached,
下一个请求,nginx代理到TomcatB,在url中有sessionid(TomcatA),tomcat或memcached中没有会话,所以TomcatB创建一个新会话,
第三个请求,带有sessionid的TomcatA的nginx代理(TomcatB的新会话) 因此,它始终保持并共享两个tomcat之间的会话。

解决方法是在tomcat中删除cookies =“false”的配置。