Tomcat +Nginx+Redis实现session共享

一、准备工作

中间件:Tomcat、Redis、Nginx

jar包:commons-pool2-2.4.2.jar、jedis-2.8.0.jar、tomcat-redis-session-manager-2.0.0.jar

二、配置

Tomcat

多台Tomacat需要配置不同的端口

/lib

将jar包存放到此位置

/conf/server.xml

Tomcat +Nginx+Redis实现session共享

Tomcat +Nginx+Redis实现session共享

/conf/context.xml

Tomcat +Nginx+Redis实现session共享

host为Redis的ip地址,port为端口,database为数据库

Nginx

/conf/nginx.conf

Tomcat +Nginx+Redis实现session共享

upstream意为配置服务器列表,本例中开启了两台tomcat,端口分别为8080与9999。

proxy_pass意为配置代理服务器。

此配置意为监听本地(192.168.0.113)的80端口,并将请求以轮询方式转发给8080和9999的tomcat服务器。

Redis

Redis不需要特殊配置,启动即可。

三、测试

先后启动Redis服务、两台tomcat服务器、Nginx服务器。

在Tomcat启动页面加上标识,判断两台服务器中sessionId是否一致。

/webapps/ROOT/index.jsp:

Tomcat +Nginx+Redis实现session共享

四、结果

Tomcat +Nginx+Redis实现session共享

Tomcat +Nginx+Redis实现session共享

如果F5刷新页面不能切换端口对应的页面,可能是由于浏览器缓存造成。

解决方法:清除缓存刷新,alt+F5

此时可看到多个tomcat服务在不断轮询,且sessionId一致。

再用Redis桌面管理工具查看信息:

Tomcat +Nginx+Redis实现session共享

可以看到session信息已经交给Redis管理。

实现成功 。

五、弊端

此种方式依赖于tomcat容器,如果中间件换成jetty或者其他,就不受用。

还有一种较好实现方式:Spring Session + Redis

原文 

https://juejin.im/post/5efd454ae51d45348a2b5b64

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Tomcat +Nginx+Redis实现session共享

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址