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

发布于 2021-11-18 19:35:09 字数 567 浏览 890 评论 4

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

浅沫记忆 2021-11-19 00:11:39

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);

绝影如岚 2021-11-19 00:09:08

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

尐偏执 2021-11-19 00:06:48

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

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

剑心龙吟 2021-11-19 00:00:10

memcached 来处理不是更好吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文