当我们集群时,nginx轮训算法,由于会访问到多个服务器中的某一个,如服务器A,会存下一个sessionid1,当我们再次访问时,可能被反向代理到服务器B,判断呀sessionid1不存在,判断为没有登录,会生成sessionid2。。。这样重复。
解决方法1:一个用户限制只能访问某个服务器,在nginx中加ip_hash;若这个服务器挂掉,则会被代理到另一个服务器。
解决方法2:在web.xml中添加disatribute 标签,实现session共享。由于服务器之间共享也会占用tomcat连接,若多了则相当耗性能,不推荐这样使用。
解决方法3:使用redis。