上一篇遗留了一个问题,用户登陆后两台服务器的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又是新的一个。