scgi_next_upstream
`scgi_next_upstream` 指令控制在使用 SCGI 时哪些错误条件会触发将请求重试到下一个上游服务器。 — NGINX HTTP Core
scgi_next_upstream
httpserverlocation
语法scgi_next_upstream error_code | timedout | invalid_header | http_500 | http_502 | http_503 | http_504;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1+
说明
`scgi_next_upstream` 指令用于诸如 `http`、`server` 和 `location` 等上下文,在 SCGI 模块中对请求重试逻辑的管理起着关键作用。当请求因指定的错误条件失败时,该指令允许管理员指定 NGINX 是否应尝试将请求发送到上游块中的下一个服务器。这些条件包括超时错误、连接被拒绝或网关错误响应。通过在服务器端出现问题时将请求重新路由到可用服务器,这有助于提高可靠性并为客户端提供更顺畅的体验。 该指令允许指定多个参数,形成一个逗号分隔的列表,用以指示 NGINX 在遇到特定错误时应如何处理。例如,你可能希望在超时情况下重试请求,但在 500 Internal Server Error 情况下不重试。理解指令中包含的每个条件的含义对于构建弹性应用程序至关重要。错误配置该指令可能导致不必要的重试(从而增加延迟),或者相反,在本应重试时却没有重试。 此外,还应注意默认值与指定参数如何交互。如果未定义任何值,NGINX 将不执行重试,将该指令与适当的 `scgi_pass` 配置相结合可以确保与 SCGI 应用的成功通信。
配置示例
location /some_url {
scgi_pass backend;
scgi_next_upstream error_code timedout http_500;
}⚠
确保正确定义上游服务器以避免路由错误。
⚠
注意不要过度使用重试;过多的重试可能导致性能下降或请求堆积。
⚠
参数的顺序很重要;要了解每个指定错误条件的影响。