Nginx 服务端会按照设定的间隔时间主动向后端的 upstream_server 发出检查

4 min read

请求,以验证其是否能正常响应。这个功能被称为健康检查。

健康检查可以通过配置 nginx.conf 文件实现。例如,下面的配置将每 5 秒检查一次后端服务是否健康:

http {
  upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
    keepalive 15;
    # 健康检查配置
    health_check interval=5s;
  }
  server {
    listen 80;
    location / {
      proxy_pass http://backend;
    }
  }
}

具体来说,health_check interval=5s 表示检查间隔为 5 秒(可以用 interval 参数指定),默认使用 HTTP HEAD 请求(可以用 method 参数指定),超时时间为 5 秒(可以用 timeout 参数指定),连续 2 次检查失败则认为服务不可用(可以用 fails 参数指定)。当服务不可用的时候,nginx 会自动将其从负载均衡池中移除,并尝试尝试将请求转发给其他健康的节点。当服务检查成功时,nginx 会自动将其重新加入负载均衡池中。