nginx + tomcat 导致session丢失的问题
2015-12-23 18:56
531 查看
niginx 在做反向代理的时候,如果代理的目录地址和用户访问的目录地址不在同一个层级下的时候,即
参考:http://blog.csdn.net/yakson/article/details/46683285
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 变为"/"路径下,添加两行代码如下:
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 /; } }
参考:http://blog.csdn.net/yakson/article/details/46683285
相关文章推荐
- Maven集成Tomcat7开发(九)
- Linux下apache tomcat集群搭建
- tomcat下两个网站,后台新闻更新之后,前台页面不展示,tomcat报错-连接池错误c3p0
- (原)Linux下安装tomcat
- Tomcat 环境部署
- myeclipse2015不能启动tomcat,提示: Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at local
- 一台服务器下启多个Tomcat
- zabbix使用JMX监控tomcat性能
- nginx+tomcat负载均衡
- 规划 linux 下 apache nginx php mysql java tomcat jsp服务器
- IDEA与Tomcat创建并运行Java Web项目及servlet的简单实现
- Interllij idea Tomcat 内存调优
- tomcat域名访问设置
- Linux下配置apache与Tomcat连接
- 环境安装备忘录 Tomcat
- Tomcat 工作原理【转】
- nginx 和 tomcat 组合搭建后端负载均衡
- window7 64bit解决tomcat内存不足问题
- linux下的环境的部署 jdk tomcat
- Tomcat:IOException while loading persisted sessions: java.io.EOFException解决手记