上一篇遗留了一个问题,用户登陆后两台服务器的session不能共享,我研究了一下,发现有四个解决方案,1、session放入cookie中,2、session放入数据库中,3、session使用memcache技术放入内存中。这几个一看就不是合适,不安全,I/O慢,内存溢出。所以我觉得第四种方式比较合适,就是在nginx.conf中配置一个ip_hash,原理是ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session。
include gzip.conf;
upstream localhost {
#ip_hash
ip_hash;
server localhost:8080;
server localhost:9080;
}对,就是上一篇中的配置项把注释去掉就OK了。
我们把昨天的两个index.jsp稍微改一下,body改成
<body>
tomcat1<br/>
<%=request.getSession().getId() %>
</body>与
<body>
tomcat2<br/>
<%=request.getSession().getId() %>
</body>然后启动两个tomcat测试下,键入localhost,发现
同一台电脑上显示的session id是一致的
在另一台电脑上面键入服务器的ip发现session id又是新的一个。
本文介绍了一种解决多服务器间Session共享问题的方法,通过在Nginx中配置ip_hash,确保同一IP地址的请求被定向到相同的后端服务器,从而实现Session的稳定共享。
400

被折叠的 条评论
为什么被折叠?



