nginx+redis+tomcat7构建session共享 踩的坑
一.基于win7环境
二.nginx 、 redis等的安装配置在此文不在描述。请自行百度。
三.tomcat7配置
1.准备两个tomcat7,这里我们用tomcat7-1,tomcat7-2
2.下载所需要的jar 包,下载地址:http://download.****.net/download/zhangyongdingrui/10257360
3.将下载的压缩文件解压,把 tomcat-redis-session-manager-1.2-tomcat-7.jar、jedis-2.2.1.jar、commons-pool-1.6.jar这三个jar分别放到tomcat7-1和tomcat7-2的lib目录
4.分别修改tomcat7-1和tomcat7-2的conf目录下的context.xml文件,在<Context></Context>里加入配置:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="127.0.0.1"
port="6379"
password="foobared"
database="0"
maxInactiveInterval="60">
</Manager>
注:host为redis服务器主机ip;port为redis端口;password为redis密码;
效果如下图:
5.分别修改tomcat7-1和tomcat7-2的端口。
四.nginx配置
1.在http节点下加入配置:
upstream localhost{
#ip_hash;
server localhost:8080 max_fails=1 fail_timeout=90s;
server localhost:8090 max_fails=1 fail_timeout=90s;
}
由于两个tomcat都在本机,所以upstream的server都指向的本机
2.在server节点下加入配置:
location /{
proxy_pass http://localhost;
#include proxy.conf;
}
具体的配置可参考:http://download.****.net/download/zhangyongdingrui/10257410
五.Demo程序
下载链接:http://download.****.net/download/zhangyongdingrui/10257429
注:在代码里面存入session的对象(比如User)必须实现 implements Serializable接口,否则从session取的时候取不到