Linux环境下,nginx proxy_pass tomcat之后,session失效!

TommyW 发布于 2015/08/30 14:32
阅读 780
收藏 0

生产环境如下:

centos 6.5
nginx 1.8
tomcat7
redis3
mysql5.6

在上面跑了一个web应用,使用的是apache的shiro做为登陆及权限验证!用nginx proxy_pass 到tomcat跑java。
nginx配置如下:

在tomcat里也配置了虚拟主机,跑的是8080。配置如下:

这样的配置照理来说应该是可以的,并且确定也是可以的。唯一的一点就是,session的失效。用户在登陆后,显示登陆成功,系统正常跳转至后台首页,问题出现在这差不多1S的时间内,用charles、谷歌浏览器查看,都正常生成cookie,路径也正常,如下图

在跳转到后台之后,shiro马上就认证失败了。就跳回到登陆页面。这一切,在windows下面是完全没有问题的。都是正常工作的。

我也查了很多的资料,很多的方案说是tomcat的session存储机制问题,在nginx代理之后,会出现session丢失的现象,于是我把session存放到了redis内存服务器下。配置如下:

并且能拿到session序列化到redis里的值

我已经想不到有什么东西会导致session失效了,如果有知道的大神,请麻烦帮我看一下。谢谢。

加载中
0
T
TommyW
@红薯大哥是否有解决方案。。
0
T
TommyW
没人知道吗?在线等啊。。。 
0
李加胜
李加胜

proxy_cookie_path ~*^/.* /;

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

0
kaishui
kaishui

引用来自“李加胜”的评论

proxy_cookie_path ~*^/.* /;

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

加上这个可以
0
T
TommyW

引用来自“李加胜”的评论

proxy_cookie_path ~*^/.* /;

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

引用来自“kaishui”的评论

加上这个可以
谢谢你的回答,问题已经解决了。问题并未出现在软件上,而是操作系统上,同样的写法,在windows下是没有问题的,但在Linux下就会出现Null。不过还是谢谢。
0
李加胜
李加胜

引用来自“李加胜”的评论

proxy_cookie_path ~*^/.* /;

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

引用来自“kaishui”的评论

加上这个可以

引用来自“TommyW”的评论

谢谢你的回答,问题已经解决了。问题并未出现在软件上,而是操作系统上,同样的写法,在windows下是没有问题的,但在Linux下就会出现Null。不过还是谢谢。
嗯 好的
返回顶部
顶部