首页 > 系统相关 >Nginx:长短连接

Nginx:长短连接

时间:2024-09-03 14:50:11浏览次数:9  
标签:请求 server Nginx 长短 timeout 连接 keepalive

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

相关文章

  • IP地址提示不是私密连接如何解决
    IP地址提示“不是私密链接”或“连接不是私密的”通常是由以下几个原因导致的:一、SSL/TLS证书问题证书过期:网站的SSL证书如果超过了有效期,浏览器会认为它不再可信,从而显示连接不安全的警告。证书不受信任:证书可能由不受浏览器信任的颁发机构(CA)签署,或者根本就没有被任何受信......
  • 远距离跨网络实现windows远程桌面连接
    1.保证已经打开被连接电脑---远程访问---权限。我的电脑--右键--属性--远程设置  2.选择允许连接(选择用户和高级没有特殊设置可以不动,被连接电脑当前登陆的账号就可以满足权限)    3.打开--控制面板    4.依次选择至当前位置,打开允许应用或功能通过防......
  • 鸿蒙WebSocket连接
    在HarmonyOS(OpenHarmony)环境下,可以使用JavaWebSocketAPI来实现服务器与客户端的双向通信。下面是详细的步骤:引入WebSocketAPI依赖:在build.gradle文件中添加以下依赖项:implementation'org.java-websocket:Java-WebSocket:1.5.1'创建WebSocket对象:可以通过继承WebSocket......
  • 用 `paho-mqtt` 客户端连接 RabbitMQ 并发布和订阅消息
    在Python中,使用MQTT客户端连接RabbitMQ可以通过paho-mqtt库来实现。RabbitMQ必须启用MQTT插件,这样才能作为一个MQTTBroker工作。以下是一个完整的Python示例,用paho-mqtt客户端连接RabbitMQ并发布和订阅消息。步骤1:启用RabbitMQ的MQTT插件在R......
  • Vue3+NestJS+Vite4+TS4+Mysql8+Nginx全栈开发企业级管理后台
    vite打包快的原因:冷启动1.esbuild构建依赖,go语言编写多线程打包。2.原生的esm方式提供源码,浏览器分担了一部分工作。HMR热更新1.缓存机制,利用浏览器http头部,源码模块请求根据304协商缓存和依赖模块请求通过强缓存(cache-control:max-age=315360000,public,immutable)只是模块......
  • C端产品经理的艺术:连接用户与产品的桥梁
    在互联网产品的世界里,C端产品经理(ConsumerProductManager)是连接用户与产品的关键桥梁。他们的职责不仅仅是设计和优化产品,更重要的是深刻理解用户需求,并通过技术与创新,将这些需求转化为卓越的用户体验。本文将深入剖析C端产品经理的核心职责、与其他产品经理的区别、面临的独特......
  • 深入剖析 PCI 转 CPCI 载板转接卡:连接不同架构的桥梁
    在计算机技术不断发展的进程中,硬件接口的多样性和演进促使了各种转接卡的出现,以满足不同接口标准之间的连接和通信需求。其中,PCI转CPCI载板转接卡作为一种关键的转接设备,在实现PCI(PeripheralComponentInterconnect)接口与CPCI(CompactPCI)接口之间的转换方面发挥着重要作用。......
  • 解析 XMC 转 CPCI 载板转接卡:连接不同接口的关键纽带
    在计算机和电子设备的世界里,各种接口标准不断涌现和发展,以满足不同应用场景和性能需求。其中,XMC转CPCI载板转接卡作为一种特殊的硬件设备,在实现不同接口之间的转换和连接方面发挥着重要作用。XMC(eXtendedMezzanineCard)和CPCI(CompactPCI)是两种常见的板卡接口标准,各自具有特......
  • 探索 XMC 转 PCIE 载板转接卡:连接技术的创新纽带
    在当今科技日新月异的时代,电子设备的接口标准不断演进和多元化,以满足日益复杂和多样化的应用需求。在这个背景下,XMC转PCIE载板转接卡作为一种关键的连接解决方案,正逐渐展现出其重要的作用和价值。XMC(eXtendedMezzanineCard)和PCIE(PeripheralComponentInterconnectExpress......
  • nginx部署前端vue项目
    Nginx部署前端Vue项目的技术分析引言在现代Web开发中,Vue.js作为一种流行的前端框架,被广泛应用于构建单页面应用(SPA)。然而,将Vue项目部署到生产环境时,通常需要依赖一个高效的Web服务器来提供服务。Nginx,作为一个高性能的HTTP和反向代理服务器,因其稳定性、易用性和丰富的功能特......