scgi_socket_keepalive

'scgi_socket_keepalive' 指令启用或禁用 SCGI 连接的 keep-alive 支持。 — NGINX HTTP Core

scgi_socket_keepalive
httpserverlocation
语法scgi_socket_keepalive on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag

说明

'scgi_socket_keepalive' 指令用于 NGINX HTTP 核心模块中,管理 SCGI (Simple Common Gateway Interface) 协议的 keep-alive 连接。将此指令设置为 'on' 时,允许 SCGI 套接字与客户端保持打开的连接,从而使同一套接字可被重用于多个请求。这样可以通过减少连接开销来提升性能,尤其适用于频繁与 SCGI 后端服务器交互的应用。相反,若设置为 'off',每个请求都会建立新的连接,这可能由于连接建立和拆除的开销而增加延迟。 该指令可放置在 'http'、'server' 或 'location' 上下文中,根据应用需求提供灵活配置。一个常见用例是在用于提供由 SCGI 应用生成的动态内容的 location 中,在高流量场景下保持连接可能改善吞吐量并减少资源消耗。重要的是,该指令与所有 SCGI 命令兼容。 Keep-alive 设置会显著影响后端通信行为。因此,在启用此功能时,建议监控应用的流量模式和性能指标,因为如果大量连接同时被保持,可能会导致资源利用增加。

配置示例

location /app {
    scgi_pass 127.0.0.1:4000;
    scgi_socket_keepalive on;
}

确保后端 SCGI 服务器支持 keep-alive 连接。

如果在没有适当的负载均衡策略的情况下使用 keep-alive,可能导致资源耗尽。

注意,如果太多连接长时间保持 keep-alive,可能会导致内存使用增加。