nginx负载均衡导致session错误(无法登陆)

nginx负载均衡导致session错误

 

nginx负载均衡导致session错误(无法登陆)_第1张图片

在最近做的项目遇到一个坑,需求如下,到我的订单的时候判断了用户是否登录,如果没有登录就跳转到登录页面,登录之后在跳转到订单列表,如果登录就打开订单列表。很多需要登录的页面都加了这个规则,为了方便我把登录之前的页面保存到session,这样登录之后就可以根据session保存的url跳转到登录之前的页面

问题

正式环境里,登录之后没有跳转到之前的页面,在测试服务器上测试了一下这个BUG,不存在这个问题

问题原因

我们的服务器做了负载均衡,问题出现之后,就问了运维,负载均衡的规则是什么,默认情况下nginx默认规则为轮询,运维的回复是ip_hash,花了一个多小时,检查我的代码,最后实在是没有办法,就在线上测试了一下,结果发现session,刷新一下有,在刷新一下就没有,于是让运维检查负载均衡的规则,发现没有指定ip_hash,用了轮询的方式

解决方式

方法一

添加负载均衡为ip_hash

 
  1. upstream resinserver{
  2. ip_hash;
  3. server 192.168.1.10:8080;
  4. server 192.168.1.11:8080;
  5. }

方法二

把session保存到redis里
【推荐阅读:wordpress session保存到redis】
转载保留版权:小松博客» nginx负载均衡导致session错误

你可能感兴趣的:(Linux,nginx)