在 Nginx 中,max_fails 和 fail_timeout 是用于配置健康检查和故障恢复的参数。它们通常与 upstream 模块中的服务器配置一起使用,用于定义 Nginx 与后端服务器之间的故障检测和恢复策略。
max_fails 用于定义在 fail_timeout 时间范围内允许的最大失败次数。如果一个服务器在 fail_timeout 时间内失败的次数达到 max_fails,那么 Nginx 会将该服务器标记为不可用,暂时停止向该服务器发送请求,max_fails 默认为 1。
fail_timeout 定义在多长时间内允许服务器失败的次数达到 max_fails。在这段时间内,如果失败次数超过 max_fails,服务器将被标记为不可用,并且不会接收新的请求。在 fail_timeout 时间过去之后,Nginx 会重新尝试将请求发送到该服务器,fail_timeout 默认为 10 秒。
这两个参数一起工作,用于定义 Nginx 对后端服务器的健康检查和故障恢复策略。通过调整这些参数,可以控制 Nginx 对后端服务器的故障检测和恢复的行为,以确保系统的稳定性和可靠性。
以下是一个示例配置,演示了如何在 upstream 模块中使用 max_fails 和 fail_timeout 参数:
upstream backend { # 在 30 秒内允许最大失败 3 次,如果超过 3 次,服务器将被标记为不可用 # 如果服务器被标记为不可用,则在当前 30 秒内不会再将请求转发到该服务器 # 当 30 秒过去后,Nginx 会再次尝试将请求发送给该服务器,如果还是失败,且失败超过 3 次,将再次标记为不可用 server backend1.example.com max_fails=3 fail_timeout=30s; server backend2.example.com max_fails=2 fail_timeout=20s; server backend3.example.com max_fails=4 fail_timeout=40s; }
上面示例中,每个后端服务器都配置了不同的 max_fails 和 fail_timeout 值,以指定在什么条件下将服务器标记为不可用,并在多长时间后重新尝试将请求发送到该服务器。