upstream 模块
==========================================
与 proxy 模块结合使用的模块中,最常用的当属upstream模块。
upstream模块可定义一个新的上下文,它包含了一组upstream服务器,
这些服务器可能被赋予了不同的权重、不同的类型甚至可以基于维护等原因被标记为down。
示例:==================
upstream mywebs {
ip_hash;
server 192.168.10.61 weight=5 max_fails=3 fail_timeout=10s;
server 192.168.10.62 weight=5 max_fails=3 fail_timeout=10s;
}
location / {
proxy_pass http://mywebs;
proxy_redirect default;
}
upstream模块常用的指令有:==============
负载均衡算法 :
========================================
upstream模块的负载均衡算法主要有三种,轮调(round-robin)、ip哈希(ip_hash)和 最少连接(least_conn)三种。
ip_hash:基于客户端IP地址完成请求的分发,它可以保证来自于同一个客户端的请求始终被转发至同一个upstream服务器;
round-robin : 基于 权重的轮询。不需要明确注明,在各个节点中设置 权重 weight 即可。
least_conn: 最少连接调度算法;
定义一个upstream服务器的地址,还可包括一系列可选参数,如:============
weight:权重(主要用于 轮询调度。)
max_fails:
fail_timeout:
某个server连接失败了max_fails次,则nginx会认为该server不工作了。
同时,在接下来的 fail_timeout 时间内,nginx不再将请求分发给失效的server。
fail_timeout默认为10s,max_fails默认为1。就是说,只要某个server只要失败过一次,就会计数,
当台服务器重新上线时,检查它的失败次数,如果达到一次,就在10s内先不要发送请求给它。
backup:用于fallback的目的,所有服务均故障时才启动此服务器,可以用它来设置一台 Sorry Server ;
down:手动标记其不再处理任何请求;
**例如:============================**
配置示例, 代理服务器本机的 8080 作为 sorry Server : =======================
upstream mywebs {
#ip_hash;
server 192.168.10.5:80 weight=1 max_fails=1 fail_timeout=3s;
server 192.168.10.6:80 weight=1 max_fails=1 fail_timeout=3s;
server 192.168.10.14:8080 backup;
}
server {
listen 80;
server_name www.baby.com;
access_log /usr/local/nginx/logs/new.com.access.log main;
location = /status {
stub_status on;
allow 192.168.10.1;
deny all;
}
location / {
proxy_pass http://mywebs;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
#proxy_set_header Host $host;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 15;
proxy_read_timeout 15;
}
}
server {
listen 192.168.10.14:8080;
location / {
root /data/web-data/sorry.com;
index index.html;
}
}