0%

nginx配置解析

问题定位

结合日志进行定位

1
2
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

负载均衡

1
2
3
4
5
6
7
8
9
10
11
12
13
upstream myserver {
server 192.168.24.200:8080;
server 192.168.24.205:8080;
}
server {
....
location / {
proxy_pass myserver;#请求转向mysvr 定义的服务器列表
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

1、热备:如果你有 2 台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA 突然 A 挂啦,BBBBBBBBBBBBBB…..

1
2
3
4
upstream myserver {
server http://192.168.24.200:8080;
server http://192.168.24.205:8080; backup; #热备
}

2、轮询:nginx 默认权重就是轮询,都默认为 1,服务器处理请求的顺序:ABABABABAB….

1
2
3
4
upstream myserver {
server 192.168.24.200:8080;
server 192.168.24.205:8080;
}

3、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为 1。下面服务器的请求顺序为:ABBABBABBABBABB….

1
2
3
4
upstream myserver {
server 192.168.24.200:8080 weight=1;
server 192.168.24.205:8080 weight=2;
}

4.ip_hash:nginx 会让相同的客户端 ip 请求相同的服务器。

1
2
3
4
5
upstream myserver {
server 192.168.24.200:8080
server 192.168.24.205:8080
ip_hash;
}

5.关于 nginx 负载均衡配置的几个状态参数讲解。
down,表示当前的 server 暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非 backup 机器出现故障或者忙的时候,才会请求 backup 机器,因此这台机器的压力最轻。
max_fails,允许请求失败的次数,默认为 1。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
fail_timeout,在经历了 max_fails 次失败后,暂停服务的时间。max_fails 可以和 fail_timeout 一起使用。
weight 默认为 1.weight 越大,负载的权重就越大。

1
2
3
4
upstream myserver {
server 192.168.24.200:8080 weight=2 max_fails=2 fail_timeout=2;
server 192.168.24.205:8080 weight=1 max_fails=2 fail_timeout=1;
}