这几天 看了点关于Nginx 的文章 准备上手搭建起来, 网上的帖子很多 但是感觉似乎大部分都是拷贝过来,根本都跑步起来。
   经过半天的折腾 总算是摸索出来
  使用nginx 做负载均衡 memcached处理session共享
  环境 windows 7  X64
 java : jdk7  
 nginx : 1.5.0   http://nginx.org/;
 tomcat :6.37.0 X 3
 memecached : http://memcached.org/;

  一
    1 JDK的安装不多说
  二 安装tomcat
    如何在一台机器上启动多个TOMCAT :
      修改 conf/server.xml 中的三个配置
dPu8hlAYHAAA&bo=WgJRAAAAAAABAC4!&su=0611
这里改成三个不同的端口 如 8005,8006,8007
dPrQQlLuFgAA&bo=pQE9AAAAAAABAL4!&t=5&su=
这里也是一样 不同的三个 如 8010,8020,8030
dEldSlLxFgAA&bo=iwInAAAAAAABAIk!&t=5&su=
这里也是一样 不同的三个 如 8866,8877,8888
保存之后 分别启动三个TOMCAT 控制台无错误

就开始进行下一步
三 : 安装memcached
http://memcached.org/ 到这里下载
       解压开来   dPLMRVL3FgAA&bo=dgHuAAAAAAABAL4!&t=5&su=
打开cmd 进入memcached解压到的路径D:\javaNTM\memcached 输入:
memcached.exe –d install 回车安装windows服务
输入:memcached.exe –p 11211 –d start 回车启动memcached服务 -p 表示端口

四:安装Nginx
 下载解压
dPgP7UwvHAAA&bo=zwLbAAAAAAABADE!&t=5&su=
 打开CMD 进入 D:\javaNTM\nginx-1.5.10
输入 : start nginx
输入nginx -t  
dPsY7UwzHAAA&bo=1gJlAAAAAAABAJY!&t=5&su=
这样就表示启动成功

如果启动失败 请修改conf/nginx.conf 中的
dLyCEVE2HAAA&bo=rAFvAAAAAAABAOU!&t=5&su=
修改默认的值为utf-8 去掉注释
五:nginx 反向代理
       修改 conf/nginx.conf 文件

在server{
   localhost / {
.....
}
}添加如下代码
dCSa8UwxHAAA&bo=bwL1AQAAAAABAL4!&t=5&su=
 proxy_pass   http://localhost;
 proxy_redirect    off;
 proxy_set_header   Host $host;
 proxy_set_header   X-Real-IP $remote_addr;
 proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
 client_max_body_size   10m;
 client_body_buffer_size   128k;
 proxy_connect_timeout   90;
 proxy_send_timeout   90;
 proxy_read_timeout   90;
 proxy_buffer_size   4k;
 proxy_buffers   4 32k;
 proxy_busy_buffers_size   64k;
 proxy_temp_file_write_size  64k;
在server 之前添加如下代码
   注入 端口号要和自己的tomcat一致
dKsJE1EtHAAA&bo=UwGNAAAAAAABAPg!&t=5&su=
upstream localhost {
       server    localhost:8080;
       server    localhost:8010;
       server    localhost:8020;
   }
六:session的共享
下载如下jar包 (就是这些个jar折腾的够呛)

dPcfhVApHAAA&bo=bQHrAAAAAAABAKA!&t=5&su=

JAR 包我已经找好了 在  百度网盘 http://pan.baidu.com/s/1i3DS89B

全部拷贝进TOMCAT/lib中 三个都要哦
然后修改 conf/context.xml
   添加如下代码:
   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   sticky="false"
   memcachedNodes="n1:localhost:11211"
   failoverNodes=""
           lockingMode="all"
   requestUriIgnorePattern=".*\.(png|gif|jpg|css|js|ico)$"
   sessionBackupAsync="false"
   sessionBackupTimeout="100"
           transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    
   />

dLOxrlHBHAAA&bo=YQPkAQAAAAABAKA!&t=5&su=
因为支持memcached分布式  如果有多台memcached 在 memcachedNodes="nx:IP:port" 即可
注意:这里的端口号要和启动的设置的端口一致
打开cmd 进入nginx 的解压目录 输入 nginx -s -stop ()
       输入 nginx start 重新启动nginx
依次启动三台tomcat

  在TOMCAT \webapps\ROOT 下新增一张页面 demo.jsp

<%@ page contentType="text/html; charset=UTF-8" %>  
<%@ page import="java.util.*" %>  
<html><head><title>Cluster Test</title></head>  
<body>  
<%  
 //HttpSession session = request.getSession(true);  
 System.out.println(session.getId());  
 out.println("<br> SESSION ID:" + session.getId()+"<br>");    
 // 如果有新的请求,则添加session属性  
 String name = request.getParameter("name");  
 if (name != null && name.length() > 0) {  
    String value = request.getParameter("value");  
    session.setAttribute(name, value);  
 }    
   out.print("<b>Session List:</b>");    
   Enumeration<String> names = session.getAttributeNames();  
   while (names.hasMoreElements()) {  
       String sname = names.nextElement();    
       String value = session.getAttribute(sname).toString();  
       out.println( sname + " = " + value+"<br>");  
       System.out.println( sname + " = " + value);  
  }  
%>  
jvm1
</body>  
</html>
dE2uhlAaHAAA&bo=RwLPAQAAAAABAKw!&t=5&su=
JVM 分别是 1 2 3 分别放进 t1 t2 t3 中 然后打开浏览器

http://localhost/demo.jsp ;
dIAZhVAyHAAA&bo=MwKBAAAAAAABAJc!&t=5&su=
dJQjglA2HAAA&bo=LwKVAAAAAAABAJ8!&t=5&su=
dAwq8EwvHAAA&bo=JQJGAAAAAAABAEY!&t=5&su=

控制台
dE5js1G6HAAA&bo=2QFGAgAAAAABALs!&su=0826
nginx + tomcat + memcached 环境就搭建好了