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才能继续进行后续的长连接保持。

posted @   ShineLe  阅读(185)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示