Nginx:长短连接
学习自:
通过nginx理解什么是长连接和短连接 - 寻梦99 - 博客园
nginx(二十七)长连接和短连接_nginx 长连接-CSDN博客
0、前言
C/S通信连接分为短连接、长连接。
HTTP1.0的请求、响应采用短连接。HTTP1.1之后才支持(且默认)长连接
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将主动关闭连接。
2、Request Header中与长短连接相关的参数
connection
header中的connection可以取close或keepalive,取close代表处理完就关闭连接;取keepalive代表复用连接继续处理下条请求。
只有当C端发来带keep-alive的Header,Nginx才能继续进行后续的长连接保持。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性