生产环境如下:
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失效了,如果有知道的大神,请麻烦帮我看一下。谢谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。