https://blog.csdn.net/wzj_110/article/details/125346862
https://cloud.tencent.com/developer/article/2052037

被动检查模式

官方默认
Nginx 在代理请求过程中会自动的监测每个后端服务器对请求的响应状态,如果某个后端服务器对请求的响应状态在短时间内累计一定失败次数时,Nginx 将会标记该服务器异常。就不会转发流量给该服务器。 不过每间隔一段时间 Nginx 还是会转发少量的一些请求给该后端服务器来探测它的返回状态。 以便识别该服务器是否恢复。

upstream backend2 {
    server 192.168.1.55:9022 max_fails=2 fail_timeout=10s weight=1;
}

 server {
        listen       8200;
        server_name  localhost; 
        #access_log  logs/host.access.log  main; 
        location / {
            proxy_pass http://backend2;
            proxy_connect_timeout 5s;  #连接超时
            proxy_read_timeout 5s;#读超时
            proxy_send_timeout 5s;#发送超时
            proxy_next_upstream error timeout; #上游服务器超时
            proxy_next_upstream_timeout 10s;            
            proxy_next_upstream_tries 2; #上游服务器重试次数
        }
        location /lua {
            default_type 'text/html';
            content_by_lua_block {
                ngx.say("<p>hello, world</p>")
            }
        }
        location /upstream_status {
            #开启upstream状态页面
            check_status;
        }
}

主动检查模式

https://blog.csdn.net/m0_37543627/article/details/120840074

Nginx 服务端会按照设定的间隔时间主动向后端的 upstream_server 发出检查请求来验证后端的各个 upstream_server 的状态。 如果得到某个服务器失败的返回超过一定次数,比如 3 次就会标记该服务器为异常,就不会将请求转发至该服务器。

一般情况下后端服务器需要为这种健康检查专门提供一个低消耗的接口。