JavaEE:Nginx虚拟主机、反向代理、负载均衡(集群)配置

说明:

Nginx安装:JavaEE:Nginx安装/启动/停止/配置_a526001650a的专栏-CSDN博客

一、配置虚拟主机:

1.增加多个虚拟主机,在nginx.conf中配置(cd到usr/local/nginx/conf目录):

[root@www conf]# vi nginx.conf

修改nginx.conf,新增server(1个server代表1个虚拟主机。可以端口一样域名不同;也可以域名相同,端口不同;或者两者均不同),按ESC,输入:wq保存退出:

server {
        listen       80; #被访问的端口
        server_name  www.yyh1.com; #被访问的域名
        location / {
            root   html;
            index  index.html index.htm;
        }
}
server {
        listen       80; #被访问的端口
        server_name  www.yyh2.com; #被访问的域名
        location / {
            root   html;
            index  index.html index.htm;
        }
}

2.增加域名到IP的映射:

(1)真实机器环境,在CentOS的hosts中增加域名到本机IP的映射(cd到/etc目录):

[root@www etc]# vi hosts

按Insert,在末尾增加如下内容,按ESC,输入:wq保存退出,重启服务器:

192.168.233.129   www.yyh1.com
192.168.233.129   www.yyh2.com

(2)虚拟机环境,需要在windows的hosts中增加域名到虚拟机IP的映射(C:\Windows\System32\drivers\etc目录):

192.168.233.129   www.yyh1.com
192.168.233.129   www.yyh2.com

二、配置反向代理:

1.拷贝两个tomcat并启动:

前提:已下载并解压好tomcat01

(1)复制tomcat:

[root@www ~]# cp -r tomcat01 tomcat02

(2)修改tomcat02端口号(/root/tomcat02/):

[root@www conf]# vi server.xml

修改几处端口号,tomcat01为以下,tomcat02这三个端口号加1:

<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector executor="tomcatThreadPool"
               port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

(3)启动tomcat(tomcat01和tomcat02,cd到/root/tomcat01/bin和cd到/root/tomcat02/bin):

[root@www bin]# ./startup.sh

2.在nginx.conf中配置反向代理(/usr/local/nginx/conf/nginx.conf):

[root@www conf]# vi nginx.conf

新增upstream配置tomcat服务器地址,server->location->proxy_pass节点映射到tomcat服务器地址:

http {
    upstream tomcat01{
        server 192.168.233.129:8081; #tomcat01服务器地址
    }
    server {
        #...
        location / {
            proxy_pass http://tomcat01; #映射到tomcat01
            #...
        }
    }

    upstream tomcat02{
        server 192.168.233.129:8082; #tomcat02服务器地址
    }
    server {
        #...
        location / {
            proxy_pass http://tomcat02; #映射到tomcat02
            #...
        }
    }
}

3.反向代理缓存设置:

http{
    #proxy_cache_path为缓存目录,keys_zone为共享内存大小,max_size为缓存大小,inactive为清理间隔时间,use_temp_path=off为关闭临时目录
    proxy_cache_path /usr/local/nginx/proxy_cache keys_zone=cache1:100m max_size=1g inactive=60s use_temp_path=off;
    server {
          ...
          proxy_cache cache1;  #开启与使用上面定义的缓存配置
          proxy_cache_valid 200 304 1h;   #针对指定状态码设置缓存过期时间,此处200 304为状态码
    }
}

三、配置负载均衡(集群):
策略方式:轮询(默认)、权重、IP地址的hash值做映射、通过URL的Hash值、随机策略、最少并发量。

前提:已有tomcat01、tomcat02,并且端口号为8081、8082。

打开配置文件(cd到/usr/local/nginx/conf目录):

[root@www conf]# vi nginx.conf

1.配置负载均衡(集群):

(1)在同一个upstream节点中新增多个tomcat服务器地址:

http {
    upstream tomcat_cluster{
        server 192.168.233.129:8080; #tomcat01服务器地址
        server 1.116.75.159:8080;    #tomcat02服务器地址
    }
}

(2)使用配置:

#使用上面配的tomcat_cluster
http {
    #...
    server {
        #...
        location / {
            #...
            proxy_pass http://tomcat_cluster; #映射到tomcat_cluster
    }
}

2.负载均衡策略说明:

(1)轮询策略(默认):

http {
    upstream tomcat_cluster{
         server 192.168.233.129:8080;
         server 1.116.75.159:8080;
    }
}

(2)权重策略(weight=数值):

http {
    upstream tomcat_cluster{
         server 192.168.233.129:8080;       #不写weight,被访问频率最低
         server 1.116.75.159:8080 weight=2; #weight值越大被访问频率越高
    }
}

(3)使用ip做hash值选择节点:
算法公式:选择下标 = ip的hash值 % 集群节点数
普通hash算法:根据下标,选择节点。
一致性hash算法:根据hash算法将节点放在顺时针圆环固定位置上,每个用户为(0、2^1 - 1、2^n次方 - 1),用户就近选择节点。

http {
    upstream tomcat_cluster{
         ip_hash;    #<配置策略,算法使用IP的前3个数字0.0.0
         server 192.168.233.129:8080;
         server 1.116.75.159:8080;
    }
}

(4)使用url做has值选择节点:
算法公式:选择下标 = url的hash值 % 集群节点数

http {
    upstream tomcat_cluster{
         hash $request_uri;   #配置策略,$request_uri获取请求的url
         ...                  #此处为各节点IP与端口
    }
}

(5)使用最小连接数(并发量)选择节点:

http {
    upstream tomcat_cluster{
         least_conn;   #配置策略,请求会访问最小连接数的节点
         ...           #此处为各节点IP与端口
    }
}

3.upstream指令说明:
(1)max_conns配置服务器最大连数:

http {
    upstream tomcat_cluster{
         #限制此机最大连接数为,0时不限制
         server 192.168.233.129:8081 max_conns=100; 
    }
}

(2)slow_start配置服务器延时启用时间:

http {
    upstream tomcat_cluster{
         #此机延时启用时间,slow_start必须与weight配合使用
         server 192.168.233.129:8081 weight=2 slow_start=5s;
    }
}

(3)down标记服务器为不可访问:

http {
    upstream tomcat_cluster{
         #标记此机为不可访问
         server 192.168.233.129:8081 down;
    }
}

(4)backup标记服务器为备用机:

http {
    upstream tomcat_cluster{
         #标记此机为备用机,只有其他机挂了才能被访问
         server 192.168.233.129:8081 backup;
    }
}

(5)max_fails+fail_timeout配置最大失败次数与超时时间:

http {
    upstream tomcat_cluster{
         #max_fails设置允许最大失败次数,fail_timeout设置超时时间(类似定时器)。在10s内失败1次后,不再请求此服务器,间隔10s后才会再次请求,直到服务器能正常访问
         server 192.168.233.129:8081 max_fails=1 fail_timeout=10s;
    }
}

(6)keepalive设置长连接时间:

http {
    server {
        ...
        location / {
             proxy_pass http://tomcat_cluster;  #使用后面的upstream配置
             proxy_http_vesion 1.1;   #http协议版本号
             proxy_set_header Connection ""; #清空Connection相关头字段
        }
    }
    upstream tomcat_cluster{
         ...
         keepalive 32;  #长连接保持32秒
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值