upstream backend {
server backend1.example.com;
server backend2.example.com max_fails=3 fail_timeout=30s;
}
被动健康检查说明:
max_fails=3:设置最大失败次数为 3fail_timeout=30s:设置失败超时时间为 30 秒被动健康检查原理: 被动健康检查是一种基于响应状态码的健康检查方法,当后端服务器返回错误状态码或超时时,会计入失败次数,当失败次数达到上限时,后端服务器会被标记为不可用。
| 参数 | 说明 | 默认值 |
|---|---|---|
max_fails | 最大失败次数 | 1 |
fail_timeout | 失败超时时间 | 10s |
参数说明原理:
max_fails:设置最大失败次数,当失败次数达到上限时,后端服务器会被标记为不可用fail_timeout:设置失败超时时间,当后端服务器被标记为不可用后,会在失败超时时间后重新尝试连接健康检查流程分为以下几个步骤:
健康检查流程原理: 健康检查流程分为五个步骤,Nginx 发送请求到后端服务器,后端服务器返回响应给 Nginx,Nginx 检查响应状态码,如果响应状态码为错误状态码,会计入失败次数,Nginx 检查失败次数,如果失败次数达到上限,后端服务器会被标记为不可用,Nginx 会在失败超时时间后重新尝试连接后端服务器。
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=30s;
server backend2.example.com max_fails=2 fail_timeout=20s;
}
server {
location / {
proxy_pass http://backend;
}
}
示例说明:
backend1.example.com max_fails=3 fail_timeout=30s:设置最大失败次数为 3,失败超时时间为 30 秒backend2.example.com max_fails=2 fail_timeout=20s:设置最大失败次数为 2,失败超时时间为 20 秒示例原理:
backend1.example.com 会在失败 3 次后被标记为不可用,会在 30 秒后重新尝试连接backend2.example.com 会在失败 2 次后被标记为不可用,会在 20 秒后重新尝试连接以下状态码会被计入失败次数:
错误状态码原理: 当后端服务器返回错误状态码时,会计入失败次数。