Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

多个Tomcat负载均衡实例:可在服务器上复制出多个Tomcat分别修改Tomcat的

http访问端口(默认为8080端口)

Shutdown端口(默认为8005端口)

JVM启动端口(默认为8009端口)

1、Nginx实现多Tomcat负载均衡

Tomcat服务

127.0.0.1:6181;  

127.0.0.1:5181;

       127.0.0.1:8090;

Nginx配置

在nginx.conf中增加

upstreambackend {

        server 127.0.0.1:6181;  

        server 127.0.0.1:5181;

              server 127.0.0.1:8090;             

    }

server {

         #nginx的端口

        listen  6555;

#nginx ip地址   最后访问由此为入口并且加上应用名反向代理到server中的IP随机分配

       server_name  127.0.0.1;

 

                     #将所有资源交给nginx代理

                     location /  { 

                     #代理转发域名与upstream后的一致

                     proxy_pass  http://backend;

#参数off将在这个字段中禁止所有的proxy_redirect指令:

                     proxy_redirect  off;

location/one/ {  proxy_pass      http://upstream:port/two/;  proxy_redirect   default;} location/one/ {  proxy_pass      http://upstream:port/two/;  proxy_redirect  http://upstream:port/two/   /one/;}

#配置主机ip和端口 ,非80端口需要配置端口号,避免重定向出问题 

                     proxy_set_header Host $host:6555;    

             

proxy_set_headerX-Real-IP $remote_addr; 

 

#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

                     proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for; 

 

#允许客户端请求的最大单文件字节数

                     client_max_body_size10m; 

 

#缓冲区代理缓冲用户端请求的最大字节数

                     client_body_buffer_size128k; 

 

         #nginx跟后端服务器连接超时时间(代理连接超时,若配置多个tomcat,可将超时时间设置为1,即可通过当开启一台tomcat也可进行访问)

                     proxy_connect_timeout90; 

 

#后端服务器数据回传时间(代理发送超时)

                     proxy_send_timeout 90; 

 

         #连接成功后,后端服务器响应时间(代理接收超时)

                     proxy_read_timeout 90; 

 

         #设置代理服务器(nginx)保存用户头信息的缓冲区大小

                     proxy_buffer_size 4k; 

 

        #proxy_buffers缓冲区,网页平均在32k以下的设置

                     proxy_buffers 4 32k; 

 

#高负荷下缓冲大小(proxy_buffers*2)

                     proxy_busy_buffers_size64k; 

 

#设定缓存文件夹大小,大于这个值,将从upstream服务器传

                     proxy_temp_file_write_size64k; 

              }   

}

upstream指定负载均衡组,指定其Tomcat成员

location指令将根目录目录下的静态文件交给Nginx来完成,Nginx支持只将请求的.do和静态资源交给Nginx实现静态分离,可通过正则表达式实现。

以上指令均可自由测试

 

proxy_redirect使用方式
语法:proxy_redirect [ default|off|redirectreplacement ]
默认值:proxy_redirect default
使用字段:http, server, location
如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置。
假设被代理服务器返回Location字段为: http://localhost:8000/two/some/uri/
这个指令:
proxy_redirect http://localhost:8000/two/ http://frontend/one/;
将Location字段重写为http://frontend/one/some/uri/。
在代替的字段中可以不写服务器名:
proxy_redirect http://localhost:8000/two/ /;
这样就使用服务器的基本名称和端口,即使它来自非80端口。
如果使用“default”参数,将根据location和proxy_pass参数的设置来决定。
例如下列两个配置等效:
location /one/ {  proxy_pass      http://upstream:port/two/;  proxy_redirect   default;} location/one/ {  proxy_pass      http://upstream:port/two/;  proxy_redirect  http://upstream:port/two/   /one/;}
在指令中可以使用一些变量:
proxy_redirect   http://localhost:8000/   http://$host:$server_port/;
这个指令有时可以重复:
proxy_redirect   default;  proxy_redirect  http://localhost:8000/    /;  proxy_redirect  ;  /;
参数off将在这个字段中禁止所有的proxy_redirect指令:
proxy_redirect   off;  proxy_redirect   default; proxy_redirect   http://localhost:8000/    /; proxy_redirect   ;  /;
利用这个指令可以为被代理服务器发出的相对重定向增加主机名:

 

2、Nginx+Tomcat+Redis实现session共享

Redis服务

localhost:6379

Tomcat服务

127.0.0.1:6181;  

127.0.0.1:5181;

       127.0.0.1:8090;

Nginx服务

配置所有Tomcat让其session保存到redis上,在context.xml配置(Value标签一定要在Manager标签前面):


Tomcat的lib需要导入

commons-pool2-2.0.jar

jedis-2.5.2.jar

tomcat-redis-session-manager1.2.jar (此包网上下载可能会有问题)

tomcat-util.jar

 

依次启动Redis、Tomcat、Nginx,访问Nginx(以下是nginx的启动和停止命令,由于无控制台查看,启动后请查看log下是否生成一份文件)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值