使用Chrome登入应用后,jsessionid更新,又跳转回登入页——记一次Nginx配置不当引起的乌龙事件
问题
一个用来查数据的运维工具,据少数使用者反馈之前都能正常使用,增加了某些业务功能后,在开发和测试环境都能正常使用,一部署到生产环境后,就发生登入后进入index页面,点击菜单栏中任一页面,又跳回登入页面
排查过程
-
该应用后端使用shiro作为安全框架,看之前的shiro代码使用的确有问题,但是这次改动并没有影响到这块代码,前端也都是新增的页面,排除代码的可能性。
-
考虑到开发测试服务器上都能正常使用,只有生产环境有问题,怀疑是环境问题
-
那么,生产环境只比开发测试环境多了个nginx,怀疑是之前的nginx配置有问题,要来了生产环境的nginx配置并在本地复现
-
发现加了nginx后,登入进去后有一个favicon.ico请求,状态是302重定向,来源是other,修改了cookie中的jsessionid,紧接着就发起了login.html请求,虽然这时候并没有直接跳转到登入页,但是点击菜单栏任一菜单,发起其他页面请求时,由于jsessionid不一致就会重新回到登入页