fastcgi_next_upstream

NGINX 中的 'fastcgi_next_upstream' 指令用于确定在何种情况下,应将 FastCGI 请求传递到 FastCGI upstream 块中的下一个服务器。 — NGINX HTTP Core

fastcgi_next_upstream
httpserverlocation
语法fastcgi_next_upstream error timeout invalid_header http_500;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1+

说明

'fastcgi_next_upstream' 指令允许你指定在何种条件下,对 FastCGI 服务器的请求应在配置的 upstream 组中重试到后续服务器。该指令可以接受一个或多个参数,这些参数对应特定情形,例如超时、非 2xx 响应和连接错误。启用此指令后,NGINX 可以通过尝试使用备用服务器处理请求来更优雅地处理潜在的服务器错误,从而提高 Web 应用的弹性和可靠性。 例如,典型的使用场景是部署多个用于 PHP 处理的 FastCGI 服务器。通过在配置中包含带有 'error' 和 'timeout' 等参数的 'fastcgi_next_upstream' 指令,如果原始服务器发生错误或在一定时间内未响应,NGINX 将尝试将失败的请求重发到另一个已配置的 FastCGI 服务器。在需要维持高可用性的重要的负载均衡环境中,此功能特别有用。 完整的参数集合包括诸如 'error'、'timeout'、'invalid_header'、'http_500' 等选项,允许对哪些错误条件应触发重试进行精细控制。基于错误的重试功能有助于缓解单个服务器故障相关的问题,保持无缝的用户体验并提供高可用性。然而,应谨慎配置此指令,以避免在错误情况下造成额外的开销。

配置示例

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_next_upstream error timeout invalid_header;
    include fastcgi_params;
}

在使用此指令时,如果参数过多,可能会导致意外行为,因此务必了解每个参数的含义。

请确保下一个 upstream 服务器已正确配置以处理请求;否则它也可能失败,从而导致重试循环。

如果 upstream 服务器经常不可用,过度使用可能导致性能下降。