Nginx长连接相关指令

Nginx长连接相关指令

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

keepalive

语法: keepalive connections;
默认: —
可使用的上下文: upstream

该指令出现在 1.1.4 版本。

connections 参数用来设定 Nginx 服务器与上游服务器空闲长连接的最大数目,空闲长连接保留在每个 worker 进程的缓存中,如果超过此数量,则关闭最近最少使用的连接。

需要注意的是,keepalive 指令并不限制 Nginx Worker 进程可以打开的与上游服务器的连接总数。
如果该参数设置过大,Nginx 服务器可能与上游服务器保留过多的空闲连接从而导致上游服务器没有更多的资源去分配给新连接,所以 connections 参数应设置为足够小的数字,以使上游服务器也可以处理新的传入连接。

这里的上游服务器其实就是指 upstream 节中定义的被代理的服务器。

keepalive_timeout

语法: keepalive_timeout timeout [header_timeout];
默认: keepalive_timeout 75s;
可使用的上下文: http, server, location

四层代理中也对应有该指令。

keepalive_timeout 指令可以用来指定客户端与 Nginx 服务端的长连接时间,其语法规则如下:
第一个参数用来设定一个超时时间,在该时间内,服务器端上的 keep-alive 客户端连接将保持打开状态。设为 0 时将禁用长连接。
第二个可选参数设定此格式的响应头Keep-Alive: timeout=time 字段中的 time 值,此种格式的响应头字段仅被 Mozilla 和 Konqueror 所识别,MSIE 会在大约 60 秒内自行关闭保持活动的连接。

keepalive_disable

语法: keepalive_disable none | browser ...;
默认值: keepalive_disable msie6;
可使用的上下文: http, server, location

keepalive_disable 可以用来禁用指定的浏览器使用长连接,可选值有如下:

  • msie6 值会禁用与旧版本 MSIE 的保持长连接;
  • safari 值会禁用在 Mac OS 和类似 Mac OS 的操作系统上与 Safari 或类似 Safari 的浏览器的保持长连接;
  • none:不禁用任何浏览器使用长连接;

在 1.1.18 版本之前,值 safari 与所有操作系统上的所有 Safari 和类似 Safari的浏览器匹配,并且默认情况下禁用与它们的保持长连接。

keepalive_requests

语法: keepalive_requests number;
默认值: keepalive_requests 100;
可使用的上下文: http, server, location

该指令出现在版本0.8.0中。

四层代理中也对应有该指令。

该指令可以设置通过长连接的最大请求数,当请求数量达到指定的数量时,将关闭连接。

为了释放每个连接的内存分配,必须定期关闭连接。
因此,使用过多的最大请求数可能会导致过多的内存使用,因此不建议这样做。

fastcgi_keep_conn

语法: fastcgi_keep_conn on | off;
默认值: fastcgi_keep_conn off;
可使用的上下文: http, server, location

该指令出现在 1.1.4 版本。

默认情况下,FastCGI 服务器将在发送响应后立即关闭连接。
但是,将此指令设置为 on 时,Nginx 将与 FastCGI 服务器保持长连接。

如果要使用 FastCGI 服务器的长连接功能时,这一项一定要开启。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/nginx-long-conn.html

Buy me a cup of coffee ☕.