Nginx负载均衡多个Tomcat,如何实现Cookie跨大域??

山哥 发布于 2012/07/19 17:00
阅读 4K+
收藏 0

1. 最近使用 memcached-session 方案实现了多个tomcat共享session;

2. 使用Nginx 实现了多个tomcat部署一套系统进行负载均衡;

但是发现一个问题:Tomcat A 部署在 10.0.125.1 下, Tomcat B 部署在 10.0.42.90 下;

我访问系统的登录页面(此时由Tomcat A处理的)进行登录,登录成功后,我访问了b.jsp页面(此时由Tomcat B进行负载处理),发现在 b.jsp 中无法获取到session中保存的登录信息,因为在b.jsp页面中无法获取到TomcatA处理登录时生成的Cookie。

请教大家:如果实现 Tomcat A 创建的Cookie 能够被Tomcat B 获取到,即:实现Cookie跨大域访问(Cookie可以实现二级域名访问)?

我觉得:如果无法实现Cookie跨大域,则 memcached-session 共享也就无用了。

补充下:网上有一个方案:Tomcat A 登录成功后,使用js动态创建iframe访问 Tomcat B 的页面,然后进行url重定向。但是这种方案不适合 Nginx 自动进行的url转发。

加载中
0
归海一刀
归海一刀
memcached 来处理不是更好吗?
0
山哥
山哥

memcached是用来存储session,实现session共享的。 

现在关键是:用户登录后,如果在多个tomcat中共享 sessionid, 只有共享了sessionid 才能到memcached中拿到 session 信息啊

0
bakuumeo
bakuumeo
这个应该由处于上一级别的WEB/应用服务器(apache,jboss等)或负载均衡器来做。
0
Howard.L.Huang
Howard.L.Huang

1.a.x.com;b.x.com...   cookie.setDomain("x.com")

2.a.com;b.com...  cookie是不能共享的
cookieA.setDomain("a.com"),response.setCookie(cookieA);
cookieB.setDomain("b.com"),response.setCookie(cookieB);

返回顶部
顶部