nginx篇中级用法之反向代理(七层调度)
环境:
两台后端web,一台代理服务器
web1:eth0:192.168.2.100/24 httpd做一个web
web2:eth0:192.168.2.200/24 httpd做一个web
proxy:eth0:192.168.2.5/24
代理服务器有什么好处?
1.隐藏后端真实服务器信,有一定安全作用.
2.负载调度器,实现负载均衡的作用.
3.健康检查,实现状态检查,自动添加剔除集群.
在代理服务器nginx conf配置中在server之上使用upstream来定义后端集群
http{
......................
upstream webproxy { //定义集群名字叫proxy
server 192.168.2.100:80; //后端服务器1IP+PORT
server 192.168.2.200:80; //后端服务器2IP+PORT
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://webproxy;
}
}
server {
}
}
重启nginx重新载入配置文件初步测试:
看到调度器自动转到web1 和 web2 且使用轮询算法.
在nginx upstream中可以指定后端服务器权重等参数.
upstream webproxy { //定义集群名字叫proxy
server 192.168.2.100:80 weight=1 max_fails=1 fail_timeout=30;;
server 192.168.2.200:80 weight=2 max_fails=2 fail_timeout=30;;
server 192.168.2.201:80 down;
}
其中参数weight可以设置后台服务器的权重,max_fails可以设置后台服务器的失败次数,fail_timeout可以设置后台服务器的失败超时时间,down标记服务器已关机,不再参与集群调度.
wigth默认值为1,fail_timeout单位为秒.
在nginx upstream中还可以指定算法
upstream webproxy { //定义集群名字叫proxy
ip_hash;
server 192.168.2.100:80 weight=1 max_fails=1 fail_timeout=30;;
server 192.168.2.200:80 weight=2 max_fails=2 fail_timeout=30;;
server 192.168.2.201:80 down;
}
nginx目前支持3种调度算法:
轮询(默认):逐一循环调度
weight:指定轮询几率,权重值与访问率成正比 2 比 1多一倍的访问量
ip_hash:根据客户端IP分配固定的后端服务器