Upstream Probe#
该模块实现了针对 Upstream 的主动健康探测。 Added in version 1.2.0: PRO 默认 — location 为在相同 如果请求成功并考虑了 要使用探测,上游必须有一个共享内存区 (zone)。一个上游可以配置多个探测。 接受以下参数: 探测的必需名称。 要添加到 proxy_pass、uwsgi_pass 等参数中的请求 URI。默认值 — 探测请求的替代端口号。 探测之间的间隔。默认值 — 探测请求的 HTTP 方法。默认值 — 请求期间要检查的条件;定义为包含变量的字符串。如果变量替换结果为 如果设置,服务器的初始状态将被验证,在探测通过前不会转发客户端请求到该服务器。 设置此参数需要首先启用 将服务器标记为不健康的连续失败请求次数。默认值 — 1。 将服务器标记为健康的连续成功请求次数。默认值 — 1。 响应体的最大内存量。默认值 — 探测模式,取决于服务器的健康状况: 默认值 — 示例: 探测操作的详细信息: 当前活动的 upstream_probe 的名称。 在 upstream_probe 期间接收到的服务器响应体;其大小由 配置示例#
server {
listen ...;
location /backend {
...
proxy_pass http://backend;
upstream_probe backend_probe
uri=/probe
port=10004
interval=5s
test=$good
essential
fails=3
passes=3
max_body=10m
mode=idle;
}
}
指令#
upstream_probe (PRO)#
upstream_probe
name [uri=
address] [port=
number] [interval=
time] [method=
method] [test=
condition] [essential
[persistent
]] [fails=
number] [passes=
number] [max_body=
size] [mode=
always
| idle
| onfail
];location
上下文中指定的 proxy_pass、uwsgi_pass 等的 upstream 组内的服务器定义一个主动健康探测。接下来,Angie 会定期根据指定的参数对上游组中的每个服务器执行请求。upstream_probe
指令的所有参数设置,以及定义该指令的 location
上下文中控制上游使用的所有参数(包括 proxy_next_upstream 和 uwsgi_next_upstream 指令等,以及 proxy_set_header 等),则服务器通过探测。name
uri
/
。port
interval
5s
。method
GET
。test
""
或 "0"
,则探测不通过。essential
persistent
essential
;在 配置重载 前工作的 persistent
服务器开始接收请求,而无需首先通过此探测。fails
passes
max_body
256k
。mode
always
— 无论服务器状态如何都进行探测;idle
— 探测不健康的服务器以及自上次客户端请求以来的 interval
已过期的服务器。onfail
— 仅探测不健康的服务器。always
。upstream backend {
zone backend 1m;
server backend1.example.com;
server backend2.example.com;
}
map $upstream_status $good {
200 "1";
}
server {
listen ...;
location /backend {
...
proxy_pass http://backend;
upstream_probe backend_probe
uri=/probe
port=10004
interval=5s
test=$good
essential
persistent
fails=3
passes=3
max_body=10m
mode=idle;
}
}
内置变量#
http_upstream_probe
模块支持以下内置变量:$upstream_probe
(PRO)#$upstream_probe_body
(PRO)#max_body
限制。