proxy_next_upstream

`proxy_next_upstream` 指令控制在发生失败时请求是否应传递到下一个上游服务器。 — NGINX HTTP Core

proxy_next_upstream
httpserverlocation
语法proxy_next_upstream parameter1 [parameter2 ...];
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数1+

说明

`proxy_next_upstream` 指令在 NGINX 中对于管理故障并在使用 proxy module 时确保高可用性至关重要。它定义了在何种条件下当前的代理请求会在上游组中的下一个服务器上被重试。在微服务架构中,这一点尤其有用,因为可以通过将流量重新路由到另一台服务器来缓解单点故障,从而实现负载均衡和容错。 该指令接受一个或多个参数,用以指定会触发将请求传递到下一个上游服务器的错误条件。常见参数包括 'error'、'timeout'、'invalid_header' 和 'failed' 等。通过组合不同的参数,管理员可以微调重试请求的条件,从而优化用户体验,减少由于单个上游服务器的暂时性问题导致请求失败的可能性。 当上游服务器由于某个指定原因而失败时,NGINX 会尝试联系配置的 upstream block 中的下一台服务器。这有助于防止停机并提供无缝故障转移,对于维护服务连续性至关重要,因为客户端无需感知底层服务器的故障。然而,尽管该指令启用了自动重试,但仍需实施适当的监控和告警以在问题出现时及时发现它们。

配置示例

upstream myapp {
    server backend1.example.com;
    server backend2.example.com;
}

location / {
    proxy_pass http://myapp;
    proxy_next_upstream error timeout invalid_header;
}

过度使用此指令可能导致延迟增加,因为 NGINX 在响应客户端之前会等待重试。

确保上游服务器之间具有兼容性,因为在使用不同版本或配置时,重试尤其可能导致意外行为。