您的位置:首页 > 数据库 > Memcache

Windows下 Nginx+tomcat+memcached配置

2015-08-13 09:15 465 查看
Nginx是一个反向代理服务器,用于做负载平衡,可以再它之下连接若干个tomcat服务器。但由于session问题,会出现同一个sessionID但是收到的session内容不同,所以要用到memcached做这些tomcat的session共享

Nginx tomcat 和 memcahed 的安装包在: http://download.csdn.net/detail/u012364631/8996519
我用了两个tomcat服务器做示例

Step 1 配置tomcat

1.      解压tomcat ,分别为D:\testTomcat\apache-tomcat-7.0.56-1

和 D:\testTomcat\apache-tomcat-7.0.56-2

2.      使两个tomcat可以同时运行:

l  修改D:\testTomcat\apache-tomcat-7.0.56-1\conf\server.xml

将Service标签下的<Connectorport="原始端口" protocol="HTTP/1.1"

              connectionTimeout="20000"

              redirectPort="8443" />

将原始端口改为11081

l  修改D:\testTomcat\apache-tomcat-7.0.56-2\conf\server.xml

<Server port="8005" shutdown="SHUTDOWN">

8005改为9005

将Service标签下的<Connectorport="原始端口" protocol="HTTP/1.1"

              connectionTimeout="20000"

              redirectPort="8443" />

原始端口改为11082

<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />

8009改为9009

l  修改D:\testTomcat\apache-tomcat-7.0.56-1\bin\下的catalina.bat、startup.bat、shutdown.bat文件将其中的所有 CATALINA_HOME 替换成CATALINA_HOME1;类似地,将apache-tomcat-7.0.56-2\bin\下的这三个文件内容中的CATALINA_HOME替换成 CATALINA_HOME2

l  分别双击两个startup.bat启动两个tomcat。浏览器打开localhos:11081和localhos:11082检查是否成功

Step2 配置Memcached

1.      在Memcache.exe所在目录下执行memcached –d install,现在memcached已经作为系统服务可以随机启动,默认端口:11211

2.      将附件内的jar包全部拷贝到两个tomcat 的lib下

3.      分别配置两个tomcat :

a)        如果server.xml设置了虚拟目录,则在host标签下的Context标签(对应的虚拟目录)内加入

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"

           memcachedNodes="n1:localhost:11211"

           requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"

           sessionBackupAsync="false"

           sessionBackupTimeout="180000"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

                   copyCollectionsForSerialization="false"/>

b)        若果没设虚拟目录,则应在context.xml的Context标签下添加

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"

           memcachedNodes="n1:localhost:11211"

           requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"

           sessionBackupAsync="false"

           sessionBackupTimeout="180000"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

           copyCollectionsForSerialization="false"/>

 

Step 3 配置Nginx

1.      将nginx的压缩包解压

2.      修改conf/nginx.conf:  (附件中有修改好的文件)

在http{}中添加:

 

include proxy.conf; #导入自己新建的反向代理(负载均衡)规则配置文件

upstream tomcat_server{

           serverlocalhost:11081 weight=1;#第一台机器

           serverlocalhost:11082 weight=1;#第二台机器

}

 

将原始的server() 内的location / {} 改为:

     location / {

            root   html; 

            index  index.html index.htm; 

                    proxy_passhttp://tomcat_server;

                    proxy_set_header Host $host;

                    proxy_set_header X-Real-IP$remote_addr;

                    proxy_set_header REMOTE-HOST$remote_addr;

                    proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;

                    client_max_body_size 50m;

                    client_body_buffer_size256k;

                    proxy_connect_timeout 1;

                    proxy_send_timeout 30;

                    proxy_read_timeout 60;

                    proxy_buffer_size 256k;

                    proxy_buffers 4 256k;

                    proxy_busy_buffers_size256k;

                    proxy_temp_file_write_size256k;

                    proxy_next_upstream errortimeout invalid_header http_500 http_503 http_404;

                    proxy_max_temp_file_size128m;

        }

Step 4.测试

1.      将附录中的testNginx文件夹分别赋值到两个tomcat的webapps目录下,并将其中的testNginx/index.jsp内out.println("apache-tomcat-7.0.56-01");一行分别改为-01和-02

2.      确保memched服务处于运行状态

3.      启动两个tomcat

4.      启动nginx.exe

5.      浏览器输入localhost\testNginx 并刷新几次,会发现sessionid不变sessionPort在两个tomcat下切换;且通过num的值可以发现,两个tomcat共享了session:

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息