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密码;

效果如下图:

nginx+redis+tomcat7构建session共享 踩的坑

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取的时候取不到