开发者社区> 问答> 正文

配置session共享失败 多tomcat+redis+nginx?报错

配置多个服务器上的tomcat共享session,  按照网上的参考, 安装了redis2.8.3, 在tomcat的context.xml文件中也添加了必要参数. 一开始的时候, 发现报错. 然后把放入session的user实体类添加了序列化操作, 就可以使用了.  但是发现, 登录nginx和分别访问其它两个处理请求的服务器ip的session id 不一样.就是说是3个不同的session. 但是在nginx上的请求又是两个tomcat都在处理.  这个是什么原因呢? 还有就是, 登录nginx的时候,第一次登录,会发现检测不到登录状态, 也就是检测不到session里面有user,然后跳转回到登录页面, 第二次登录就可以了.  求教大家,这是什么原因? 该怎么解决呢?

展开
收起
爱吃鱼的程序员 2020-06-10 10:23:15 935 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    我这边有另外一种方式处理负载均衡(不需要使用到session),楼主可以参考下

    每个请求都需要携带一个token到后端进行验证,token代表了用户的信息,这个token是在登录的时候获取的,如果是PC,则存储在cookie里面,如果是手机(也存在某个地方,手机我没做过,哈哈)。

    非常感谢,以后可以使用这个方法看看.

    你试试把session存储到redis上,这需要将tomcat的sessionmanager。之前我是把session存储到membercache上。你可以参考这个链接https://github.com/jcoleman/tomcat-redis-session-manager。

    我把session是存放到了redis上,在redis-cli里都能get到session,但是效果还是必须要登录才可以,不知道怎么回事这个链接应该是tomcat7的tomcat-redis-session-manager,你那边有tomcat6的么?可以分享一下么我认为可以使用自己创建Sessionid的方式,第一次访问时不存在就自己创建,同时保存到redis中,第二次及之后的访问,可以先从redis中读取,看是否存在登陆标记,如果存在就不需要再创建了。我之前搭了一个nginx+tomcat+memcached 负载均衡session共享。。 redis没搞过才搞过,你这种情况,显然是redis没能够session共享。你加入相应的jar包了吗? http://blog.csdn.net/u012186351/article/details/50608694
    2020-06-10 10:23:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云Redis容灾体系介绍--夏周 立即下载
阿里云Redis——读写分离 立即下载
Redis Enterprise 立即下载