Upstream Probe#
该模块为 stream_upstream 实现主动健康探针。 备注 根据 RFC 2616(HTTP/1.1)和 RFC 9110(HTTP 语义)规范,
HTTP 头部必须使用 CRLF 序列( Added in version 1.4.0: PRO 默认 — server 定义一个针对 upstream 组内服务器的主动健康探针,
该组在与 如果向服务器的请求成功,并考虑到 为了使用探针,上游必须具有共享内存区域 (zone)。
一个上游可以配置多个探针。 接受以下参数: 探针的必需名称。 探针请求的备用端口号。 探针之间的 间隔。
默认值 — 探针的条件,定义为变量字符串。
如果变量替换结果为 如果设置,则检查服务器的初始状态,因此在探针通过之前,服务器不会接收客户端请求。 设置此参数需要先启用 使服务器不健康的连续失败探针次数。
默认值 — 1。 使服务器健康的连续通过探针次数。
默认值 — 1。 响应的最大内存大小。如果指定零 值,则禁用响应等待。
默认值 — 探针模式,取决于服务器的健康状态: 默认值 — 如果指定,则使用UDP协议进行探测。
默认情况下,使用TCP进行探测。 用于检查的数据;
这可以是带有前缀 示例: 探针操作细节: 当前活动的 upstream_probe 的名称。 在由 upstream_probe 配置的主动探针期间接收到的响应内容。配置示例#
server {
listen ...;
# ...
proxy_pass backend;
upstream_probe_timeout 1s;
upstream_probe backend_probe
port=12345
interval=5s
test=$good
essential
fails=3
passes=3
max_response=512k
mode=onfail
"send=data:GET / HTTP/1.0\r\n\r\n";
}
rn
)进行分隔,而不能仅使用 n
。指令#
upstream_probe (PRO)#
upstream_probe
name [port=
number] [interval=
time] [test=
condition] [essential
[persistent
]] [fails=
number] [passes=
number] [max_response=
size] [mode=
always
| idle
| onfail
] [udp
] [send=
string];upstream_probe
指令相同的 server
上下文中通过 proxy_pass 指令指定。upstream_probe
指令的所有参数设置以及影响 server
上下文如何使用上游的所有参数,包括 proxy_next_upstream 指令,则服务器通过探针。name
port
interval
5s
。test
""
或 "0"
,则探针不通过。essential
persistent
essential
;
在 配置重载 之前被认为健康的 persistent
服务器开始接收请求,而无需先通过此探针。fails
passes
max_response
256k
。mode
always
— 无论状态如何都探测服务器;idle
— 探测不健康的服务器和自上次客户端请求以来经过 interval
的服务器。onfail
— 仅探测不健康的服务器。always
。udp
send
data:
的字符串或带有数据的文件名
(绝对指定或相对于 /usr/local/angie/
目录)。upstream backend {
zone backend 1m;
server a.example.com;
server b.example.com;
}
map $upstream_probe_response $good {
~200 "1";
default "";
}
server {
listen ...;
# ...
proxy_pass backend;
upstream_probe_timeout 1s;
upstream_probe backend_probe
port=12345
interval=5s
test=$good
essential
persistent
fails=3
passes=3
max_response=512k
mode=onfail
"send=data:GET / HTTP/1.0\r\n\r\n";
}
内置变量#
stream_upstream
模块支持以下内置变量:$upstream_probe
(PRO)#$upstream_probe_response
(PRO)#