nginx(5)负载均衡后session共享问题\session共享解决方案

session共享问题

在单个的服务器的时候,我们可以通过如下方式进行对用户信息保存,认证

1.用户向服务器发送用户名和密码。

2.验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中。

3.服务器向用户返回session_id,session信息都会写入到用户的Cookie。

4.用户的每个后续请求都将通过在Cookie中取出session_id传给服务器。

5.服务器收到session_id并对比之前保存的数据,确认用户的身份。

用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态。

解决方案一:session + 第三方程序存储实现session 共享

为了避免session在多服务器直接不共享的问题,就将 session 放入 第三方程序中,比如memcached或者redis。

当客户端第一次发送请求后,nginx将请求分发给服务器1 ,然后将服务器1 产生的session 放入redis中,这样的话 客户端、服务器1 和redis中都会有一个相同的session

当客户端发送第二次请求的时候,nginx将请求分发给服务器2 (已知服务器2 中无session),因为客户端自己携带了一个session,那么服务器2 就可以拿着客户端带来的session中的session ID去redis中获session,只要拿到这个session,就能执行之后的操作。

解决方案二:JWT实现单点登录
JWT

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值