开发者社区> 问答> 正文

Linux环境下,nginx proxy_pass tomcat之后,session失效,求助大神。

生产环境如下:
centos 6.5
nginx 1.8
tomcat7
redis3
mysql5.6
在上面跑了一个web应用,使用的是apache的shiro做为登陆及权限验证!用nginx proxy_pass 到tomcat跑java。
nginx配置如下:
screenshot
在tomcat里也配置了虚拟主机,跑的是8080。配置如下:
screenshot
这样的配置照理来说应该是可以的,并且确定也是可以的。唯一的一点就是,session的失效。用户在登陆后,显示登陆成功,系统正常跳转至后台首页,问题出现在这差不多1S的时间内,用charles、谷歌浏览器查看,都正常生成cookie,路径也正常,如下图
screenshot
screenshot 在跳转到后台之后,shiro马上就认证失败了。就跳回到登陆页面。这一切,在windows下面是完全没有问题的。都是正常工作的。

我也查了很多的资料,很多的方案说是tomcat的session存储机制问题,在nginx代理之后,会出现session丢失的现象,于是我把session存放到了redis内存服务器下。配置如下:
screenshot
并且能拿到session序列化到redis里的值
screenshot
我已经想不到有什么东西会导致session失效了,如果有知道的大神,请麻烦帮我看一下。谢谢。

展开
收起
落地花开啦 2016-06-03 16:28:49 3805 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    proxy_cookie_path ~*^/.* /;

    在你的location中加上这个试一下

    2019-07-17 19:26:48
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从Linux系统内核层面来解决实际问题的实战经验 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载