Nginx负载均衡+tomcat+session共享

本文,是笔者工作之余写的,第一是把之前打系统框架的步骤记录下来。第二是将这个过程,谈不上经验,奉献给正在撘这种框架遇到各种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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#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:

?
1
2
3
gzip               on;
gzip_min_length    1000;
gzip_types           text/plain text/css application/javascript application/x-javascript;


 

proxy.conf:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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中配置的:

       

?
1
2
3
4
   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

配置context.xml文件,如下:

添加下面的代码:

?
1
2
3


4
5
6
7
< 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共享成功!!!

 

结果如下:

同一浏览器中:




不同浏览器中:



文章来源:http://my.oschina.net/yuxj/blog/220012?fromerr=rT924qfD



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsxlgg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值