说明:
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秒
}
}