scgi_send_timeout

指令 'scgi_send_timeout' 设置 NGINX 在向 SCGI 服务器发送请求时的最大等待时间。 — NGINX HTTP Core

scgi_send_timeout
httpserverlocation
语法scgi_send_timeout time;
默认值60s
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

'scgi_send_timeout' 指令指定向 SCGI (Simple Common Gateway Interface) 服务器发送请求的时间限制。该超时在 NGINX 作为反向代理对接 SCGI 后端的场景中非常重要。如果超过指定的时间限制,NGINX 将关闭与 SCGI 服务器的连接,从而终止该请求。该超时从 NGINX 开始发送数据的时刻开始计算,直到成功发送完所有请求的数据为止,因此在处理可能阻塞的长时间运行的请求或响应时至关重要。 该指令可以在 'http'、'server' 或 'location' 上下文中定义,从而允许在服务器配置中以不同的粒度级别灵活配置超时策略。该指令的参数为时间值,可以用多种格式表示,包括秒、分钟或二者组合,使用类似 's'、'm' 等后缀。管理员可以配置此指令以防止 SCGI 服务器无响应,从而优化资源使用,避免 NGINX 无期限等待可能永远不会到来的响应。 在设置超时时间过低时应谨慎,因为这可能导致对有效的、长时间运行的请求过早断开连接。相反,设置过高则可能导致不必要的资源消耗。建议在确定合适的超时值时考虑应用负载的性质和 SCGI 服务器的性能。

配置示例

location /api {
    scgi_pass backend;
    scgi_send_timeout 30s;
}

将超时值设置得过低可能导致有效请求过早失败。

确保超时设置与 SCGI 服务器的预期响应时间相一致。