文档章节

解决nginx中proxy_pass到tomcat的session丢失问题

刺猬一号
 刺猬一号
发布于 2017/05/23 01:55
字数 311
阅读 38
收藏 0

引言

  一直以来我都是用nginx1.5.7来作为web服务器和代理服务器来使用,一直都是一个应用对应一个Tomcat也就是一个端口,也只对应一个域名。 
  今天把服务器上的Tomcat整合了一下,5个应用共用一个Tomcat。 
最先出现的问题是,用户等进入后台时出现异常,找不到登录的用户信息! 
  经调试发现是request请求变成了多个,并且session也不一致,感觉就像是另一个浏览器在访问,得出结论:肯定是session丢失了!

原因

  经过认真的分析,得出结论:问题出在Nginx的配置上!

server_name  www.weixin4j.org;
charset utf-8;
root   /opt/apache-tomcat-7.0.53/webapps/weixin4j/;
location / {
    proxy_pass         http://127.0.0.1:8180/weixin4j/;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

此配置会导致cookie存储的位置不是基于“/”那么在第二次访问的时候会从新创建session,因此session中的信息丢失。

解决方案

修改cookie的存储路径

server_name  www.weixin4j.org;
charset utf-8;
root   /opt/apache-tomcat-7.0.53/webapps/weixin4j/;
location / {
    proxy_pass         http://127.0.0.1:8180/weixin4j/;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    add_header From www.weixin4j.org;
    proxy_cookie_path /weixin4j/ /;
    proxy_set_header Cookie $http_cookie;
}

重启服务,测试! 
通过!

© 著作权归作者所有

刺猬一号
粉丝 12
博文 373
码字总数 616361
作品 0
深圳
私信 提问
nginx中proxy_pass到tomcat的session丢失

好多事不自己去做确实不知道,随便玩一玩就出了好多问题,虽然都不大,但却都是必须要解决的。今天早上碰见的问题就是nginx中proxy_pass到tomcat的session丢失了。 之前也没测试过使用nginx...

-wangming-
2016/12/07
118
0
Linux环境下,nginx proxy_pass tomcat之后,session失效!

生产环境如下: centos 6.5 nginx 1.8 tomcat7 redis3 mysql5.6 在上面跑了一个web应用,使用的是apache的shiro做为登陆及权限验证!用nginx proxy_pass 到tomcat跑java。 nginx配置如下: ...

TommyW
2015/08/30
768
6
急!急!急!nginx+tomcat做负载均衡设置了ip_hash,同一台手机的请求不能转发到相同的tomcat

配置是这样的。为了防止session失效问题,用了ip_hash的方式,但是从tomcat日志来看发现请求还是乱来转发,同一台手机一会转到8080,一会儿转到9090.导致session丢失。现在项目上线,这问题烦...

仁江
2016/08/05
822
9
nginx转发到两tomcat之后session丢失

使用nginx负载均衡到 两个tomcat之后出现session一直失效的问题。如果只启动一个tomcat的话正常,浏览器查看cookie发现下图的情况,每次请求都会返回一个JSESSIONID过来。有人知道只什么回事...

仁江
2017/04/13
562
2
使用Nginx在windows和linux上搭建集群

Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 特点:反向代理 负载均衡 动静分离… 反向代理(Reverse Proxy)方式是指以代理服务器来接受int...

必须往前走
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试爱奇艺,竟然挂在第5轮……

今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 <br> 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? ...

上海小胖
今天
4
0
Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
解决多线程并行加载缓存问题(利用guava实现)

依赖 com.google.guava:guava:20.0 import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import j......

暗中观察
昨天
4
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部