Nginx负载均衡+tomcat+session共享

柔情痞子 提交于 2019-12-03 07:06:01

本文,是笔者工作之余写的,第一是把之前打系统框架的步骤记录下来。第二是将这个过程,谈不上经验,奉献给正在撘这种框架遇到各种bug,各种问题的人们。

看这个之前首先你需要已经用nginx+tomcat+session共享打过框架,但是没有成功,遇到种种问题。即可参考此文。文章比较简洁,但全是精华。

对了,本文是基于windows平台下的。

好了,言归正传!
——————————————————————————————————————————————————

  1. 下载Nginx ;下载地址:http://nginx.org/

  2. 下载tomcat;下载地址:http://tomcat.apache.org/download-60.cgi

  3. 下载memcached-win32

  4. 下载一扒拉Session共享所用的jar

 

 

  1. Nginx下载解压之后得到这样的列表:

  2. 配置nginx.conf;新增proxy.confgzip.conf

  3. Nginx.conf

#Nginx所用用户和组,window下不指定
#user  niumd niumd;
 
#工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes  4;
 
#错误日志存放路径
error_log  logs/error.log  info;
 
#指定pid存放文件
pid        logs/nginx.pid;
 
events {
    #使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
    #use epoll;
   
    #允许最大连接数
    worker_connections  2048;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log  logs/access.log;
         fastcgi_intercept_errors on;
        
 
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
 
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;
 
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
 
    #keepalive_timeout  75 20;
         #keepalive_timeout  0;
 
    include    gzip.conf;
         include    proxy.conf;
        
    upstream localhost {
      #ip_hash;
      server localhost:18081 weight=3;
      server localhost:18080 weight=1;
     }
 
    server {
            listen       80;
            server_name  localhost;  
                            #自定义40X或者50X页面的时候需要开启 fastcgi_intercept_errors on;(上面已经开启) 
                            error_page  404     http://127.0.0.1/404.html;
                           
                            #定义网站首页
                            #root:定义网站首页存放地址
                            #index:定义网站首页名称
                            location / {   
                                     root D:/test; 
                                     index main.html; 
                            } 
                           
                            #定义静态资源存放地址
                            location ~ \.(html|js|css|png|gif|jpg|jpeg|bmp)$ {   
                                     root D:/test; 
                            }
        
                            #将jsp的请求转移到tomcat里面
            location ~ \.(jsp)$ {
                               proxy_connect_timeout   3;
                               proxy_send_timeout      30;
                               proxy_read_timeout      30;
                    proxy_pass http://localhost;
            }
   }
}


 

gzip.conf:

gzip               on;
gzip_min_length    1000;
gzip_types           text/plain text/css application/javascript application/x-javascript;


 

proxy.conf:

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   300;
proxy_send_timeout      300;
proxy_read_timeout      300;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;


 

至此Nginx已经配置成功。双击目录下面的nginx.exe 即可打开。

访问127.0.0.1将显示你在Nginx.conf中配置的:

       

  location / {   
               root D:/test; 
               index main.html; 
            }

main.html页面

 

由此看出,已经将静态资源文件分开。

 

2 . tomcat 

         我使用的是tomcat6.X;tomcat拷贝2份,分别将tomcat的端口改变。如果不在同一台机子上则不用更改。以下列出更改的地方:

         Conf\server.xml

         A:  <Server port="18005" shutdown="SHUTDOWN">

         B:  <Connector port="18080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

        C:  <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

         D:     <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

         jvmRoute="tomcat1"是做Session共享的时候使用的。

         同理,配置tomcat2!

        

由于上面的Nginx.conf已经添加了两台tomcat所以,现在启动Nginxtomcat 访问127.0.0.1/project/index.jsp  即能看出Nginx负载均衡,将请求分发到不同的tomcat中。

 

以上就是Nginx+tomcat负载均衡,百度一下这种一大堆!

 

  1. 安装memcached,并启动。

  2. a)         下载session共享需要的jar

i.                  

 

配置context.xml文件,如下:

添加下面的代码:

<Manager       className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
                                     memcachedNodes="n1:127.0.0.1:11211" 
                                     sticky="false" 
                                     sessionBackupAsync="false" 
                                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|jpeg|bmp|css|js|html|htm)$" 
                                     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
      />


经过上面的配置,则代表Nginx负载均衡,静态动态请求分开+tomcat集群+msmsession共享成功!!!

 

结果如下:

同一浏览器中:

不同浏览器中:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!