nginx负载tomcat服务器session不一致问题
问题描述
当使用nginx负载同一个应用多个实例时,可能会造成session不一致问题,让用户反复登陆,用户体验不友好
解决方案
方案一
使用nginx的upstream中的ip_hash
属性:
upstream admin.com {
ip_hash;
server localhost:8080 weight=10;
server localhost:8081 weight=10;
}
不过这个有点不好的是,登陆用户绑定了ip,nginx每次负载同一个ip都到同一个应用,失去了负载的意义,却更像是高可用的体现,名词粘滞会话、会话保持(Sticky Sessions)
方案二
使用redis。让redis来管理session,用户每次先去redis服务器取session,这样一个用户只有一个session,对于已经登陆过的用户,就不用重复登陆了