shiro未登录重定向导致nginx无法匹配请求报错的解决

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxiangzi520/article/details/82222046

   在公司做的一个项目采用前后端分离的方式,前端用的是react,后端采用shiro来做权限控制和session管理,服务器上配置nginx使用8080作为监听端口。sessionID传递到前端保存在cookie中,请求后端接口时放在请求头中传到后台进行验证。

    登录系统进行操作,一切很正常。但当我们重新发布时异常出现了:登录到系统的用户无法操作也不能跳转到登录页,经过分析后是因为服务器重启清空了session,而前端缓存的sessionID失效,shiro配置未登录跳转进行了重定向,由于nginx没有传递端口导致请求匹配不到报错。

图一,shiro配置:

图二,报错时nginx的配置:

图三,登录到系统的用户由于服务器重启,无法操作也不能跳转到登录页:

图四,分析请求发现端口丢失导致请求匹配不到报错:

图五,修改nginx配置,proxy_set_header 加入$server_port, 并且要对shiro未登录重定向的请求再次重定向:rewrite ^/pc/noLogin   /zpzc_ms/pc/noLogin permanent;

图六,nginx配置修改后端口没有丢失,成功跳转到登录页面:

图七,重定向匹配nginx:

猜你喜欢

转载自blog.csdn.net/xiaoxiangzi520/article/details/82222046