weight
=
number 设置服务器的权重,默认为1
max_fails
number 设置在fail_timeout 时间内不成功的尝试次数,判断此机器是否可用,默认尝试次数为1
fail_timeout
time 设置判断机器是否可用尝试的时间,默认时间为10s
backup 标明此机器为备份机器,当主机器不可用的时候起作用。
down 标明此机器不可用。
max_conns
number 限制代理服务器的最大连接数。默认值为0,也就是没有限制
resolve 监听ip地址以及对应的服务器域名的改变,自动修改配置,不用重启nginx.
route
string 设置服务器的路由名称
slow_start
time 设置服务器权重从0恢复到标准值的时间,默认值为0
ip_hash 请求基于客户端的ip被分发到不同的机器,把客户端IPv4地址的前三个字节或者整个ipv6地址作为一个key,确保当一个请求来自同一个客户端,发布到同一个服务器上直到这台机器不可用,才被分发到另外一台机器上。
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
keepalive 设置服务器持续连接的最大连接数的参数,当这个数目被超过之后,最近最少使用的连接被关闭。
upstream memcached_backend {
server 127.0.0.1:11211;
server 10.0.0.2:11211;
keepalive 32;
}
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
health_check :
interval = time 时间间隔,两个连续检查的时间间隔,默认为5s
fails = number 连续失败次数,根据这个参数判断此机器是否健康,默认值为1.
passes = number 连续通过的次数,很据这个参数达到这个参数判断此机器是健康的,默认值为1.
match = name 指定回应正确的判断条件,默认是这个response 的返回码应该是2xx或者3xx
例子:
http {
server {
...
location / {
proxy_pass http://backend;
health_check match=welcome;
}
}
match welcome {
status 200;
header Content-Type = text/html;
body ~ "Welcome to nginx!";
}
}
match=name:
-
status 200;
- status is 200
-
status ! 500;
- status is not 500
-
status 200 204;
- status is 200 or 204
-
status ! 301 302;
- status is neither 301 nor 302
-
status 200-399;
- status is in the range from 200 to 399
-
status ! 400-599;
- status is not in the range from 400 to 599
-
status 301-303 307;
- status is either 301, 302, 303, or 307
-
header Content-Type = text/html;
- header contains “Content-Type” with value
text/html
-
header Content-Type != text/html;
- header contains “Content-Type” with value other than
text/html
-
header Connection ~ close;
- header contains “Connection” with value matching regular expression
close
-
header Connection !~ close;
- header contains “Connection” with value not matching regular expression
close
-
header Host;
- header contains “Host”
-
header ! X-Accel-Redirect;
- header lacks “X-Accel-Redirect”
-
body ~ "Welcome to nginx!";
- body matches regular expression “
”Welcome to nginx!
-
body !~ "Welcome to nginx!";
- body does not match regular expression “
Welcome to nginx!
- 例子:
-
match welcome { status 200; header Content-Type = text/html; body ~ "Welcome to nginx!"; }
# status is not one of 301, 302, 303, or 307, and header does not have "Refresh:" match not_redirect { status ! 301-303 307; header ! Refresh; }
# status ok and not in maintenance mode match server_ok { status 200-399; body !~ "maintenance mode"; }
queue number 当请求数达到最大值时,请求会放到队列里面,当队列满了的时候并且服务器不能再接受请求,然后返回客户端502。