g学习自:
通过nginx理解什么是长连接和短连接 - 寻梦99 - 博客园
0、前言
C/S通信连接分为短连接、长连接。
HTTP请求、响应通常采用短连接。
TCP通信可以根据需要选择短连接、长连接。
长连接
C端和S端建立持久连接,用于传输多个请求、响应。
在一次连接中,可以进行多次通信而无需重复建立连接,有效降低了建链的开销和网络传输的消耗。
短连接
C端和S端建立的短暂、非持久连接,用于传输一次请求和响应。
在一次连接中,只能进行一次通信,通信结束后连接关闭。
1、Nginx如何处理长短连接
1)短连接
当用Nginx作为反向代理服务器时,C端请求会首先被Nginx接收,Nginx按照配置文件将C端请求分给对应的后端服务。
后端服务返回响应结果,Nginx将其缓存之后返回给C端,同时关闭C端与Nginx之间的连接。
下次C端再次发起请求时,会重新连接到Nginx,这就是短连接。
Nginx短连接相关配置:keepalive_timeout、keepalive_requests
keepalive_timeout:单次连接的最长时间(秒)
keepalive_requests:单次连接处理的最大请求数
例子
http{ keepalive_timeout 65; #单位秒,连接的最长时间 keepalive_requests 1000;#单次连接处理的最大请求数 server { listen 80; server_name www.example.com; location /{ proxy_pass http://localhost:8088/example; proxy_set_header Connection ""; } }
上述配置中,除了keepalive_timeout、keepalive_requests之外,还有个proxy_set_header Connection "",表示将Connection字段置空,可以有效防止S端服务返回Connection:keep-alive的响应头,避免出现长连接。
2)长连接
Nginx与长连接有关的配置是keepalive,该配置项配置于upstream块中:
upstream backend{ server backend1:8080; keepalive 32; #启用keepalive配置,启用长连接 } server{ listen 8080; server_name backend; keepalive_timeout 65; }
上文keepalive 32代表一个Nginx工作进程最多可以同时维护32个与S端服务的长连接,当有更多的连接需要建立时,Nginx会启动新的工作进程来继续处理请求。
在server中的keepalive_timeout代表一个连接的最长空闲时间(单位秒),当连接超过这个时间还没有任何数据交换,那么Nginx将主动关闭连接。
标签:请求,server,Nginx,长短,timeout,连接,keepalive From: https://www.cnblogs.com/ShineLeBlog/p/18394564