Nginx负载均衡多个Tomcat,如何实现Cookie跨大域??
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转发。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
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);
这个应该由处于上一级别的WEB/应用服务器(apache,jboss等)或负载均衡器来做。
memcached是用来存储session,实现session共享的。
现在关键是:用户登录后,如果在多个tomcat中共享 sessionid, 只有共享了sessionid 才能到memcached中拿到 session 信息啊
memcached 来处理不是更好吗?