nginx + tomcat 导致session丢失的问题
2016-10-18 16:40
337 查看
niginx 在做反向代理的时候,如果代理的目录地址和用户访问的目录地址不在同一个层级下的时候,即
如上所示,若用户访问 www.bzf.com,则会被nginx代理到本地8090端口下的sso项目下,
tomcat是通过cookie中的JsessionId来判断是否是一个新用户的,使用上述代理方式时,tomcat会将JsessionId写入www.bzf.com域名下的/sso路径下面。
用户下次再访问 www.bzf.com 的时候,发送给服务器的请求拿不到 /sso 路径下的 JsessionId,因此tomcat 会一直认为是一个新用户,这从/sso 路径下的 JSessionId会一直变化也可以看到。
上述分析表明,我们要让用户拿到它上次写入的JsessionId才可以,因为用户访问的域名是 www.dzf.com,这我们不能改变,因此应改变保存JSessionId的cookie的路径,将该路径变为 “/” 即可,这可通过nginx 的 proxy_cookie_path 来设置,将 tomcat 写入的 /sso 路径下的cookie 变为"/"路径下,添加两行代码如下:
ps:网上流传的只添加 proxy_cookie_path /sso/ /; 这一行代码的我试过,测试不通过,但是加了两行代码则测试通过!
server { listen 80; server_name www.bzf.com; location / { proxy_pass http://127.0.0.1:8090/sso; } }
如上所示,若用户访问 www.bzf.com,则会被nginx代理到本地8090端口下的sso项目下,
tomcat是通过cookie中的JsessionId来判断是否是一个新用户的,使用上述代理方式时,tomcat会将JsessionId写入www.bzf.com域名下的/sso路径下面。
用户下次再访问 www.bzf.com 的时候,发送给服务器的请求拿不到 /sso 路径下的 JsessionId,因此tomcat 会一直认为是一个新用户,这从/sso 路径下的 JSessionId会一直变化也可以看到。
上述分析表明,我们要让用户拿到它上次写入的JsessionId才可以,因为用户访问的域名是 www.dzf.com,这我们不能改变,因此应改变保存JSessionId的cookie的路径,将该路径变为 “/” 即可,这可通过nginx 的 proxy_cookie_path 来设置,将 tomcat 写入的 /sso 路径下的cookie 变为"/"路径下,添加两行代码如下:
ps:网上流传的只添加 proxy_cookie_path /sso/ /; 这一行代码的我试过,测试不通过,但是加了两行代码则测试通过!
server { listen 80; server_name www.bzf.com; location / { proxy_pass http://127.0.0.1:8090/sso; proxy_cookie_path /sso/ /; proxy_cookie_path /sso /; } }
相关文章推荐
- nginx + tomcat 导致session丢失的问题
- nginx + tomcat 导致session丢失的问题
- nginx + tomcat 导致session丢失的问题
- 解决nginx中proxy_pass到tomcat的session丢失问题:补充
- 解决nginx中proxy_pass到tomcat的session丢失问题
- 解决nginx中proxy_pass到tomcat的session丢失问题
- 解决nginx中proxy_pass到tomcat的session丢失问题
- nginx tomcat session丢失的问题
- 解决nginx中proxy_pass到tomcat的session丢失问题
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- IE中使用IFrame或Frameset导致session丢失的问题
- IE8 jquery Ajax 导致Session 丢失问题解决办法
- IE下PHP iframe跨域导致session丢失问题的解决方法
- nginx + tomcat ,session共享的问题
- 使用redis集群+tomcat缓存共享下session丢失问题产生原因以及解决
- spring-session导致request.getInputStream流数据丢失问题
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- NGINX和TOMCAT配置动静分离端口丢失问题
- nginx+tomcat+redis集群实现负载均衡和session同步的步骤和问题处理方法
- weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet跨域访问导致session丢失问题的解决