nginx(二十七)长连接和短连接

2023-05-16

一    长连接和短连接概念

1) 'HTTP'的长连接和短连接'本质'上是'TCP'长连接和短连接

2) 在'HTTP/1.0'中默认使用'短'连接;

解读:客户端和服务器'每进行一次HTTP操作',就'建立一次tcp连接',任务结束就'中断'连接

长连接和短连接的形象比喻 

二   nginx如何做到长连接

重点:'服务器'和'客户端'都要进行设置,也即'长连接'要客户端和服务端都支持

思考:哪些场景必须使用'长连接'? -->已知:'chunk'、'websocket'

①    clientnginx 保持长连接

1)keepalive_timeout

2)keepalive_requests

 

 了解keepalive_disable即可

3)keepalive_timeout 和 keepalive_request 关系

②    nginx保持和后端服务器[上游、源站]的长连接

1)典型的配置

让nginx和后端server"[nginx称为upstream]"之间保持长连接

http {
 
  upstream backend {

  ...
 
  keepalive 300; // 这个很重要,一般'默认'
 
}   
 
location / {
 
    proxy_pass http://backend;
    proxy_http_version 1.1;                         # 设置http版本为1.1
    # 机制:转发请求头为空字符串,不会透传
    # 由于HTTP/1.1不指定Connection,默认是'keepalive'长连接
    proxy_set_header Connection "";                 # 设置Connection为长连接
 
  }
}

2)upstream的keepalive指令设置

说明: 一般保持'默认'值即可

含义: nginx向这'一组'upstream中,最多'保持'多少个'空闲的tcp连接'用于'http keepalive'请求

官方keepalive指令解读

关于 Nginx upstream keepalive 的说明

keepalive_requests keepalive_time 

 2) proxy_http_version

3)proxy_set_header 

proxy_set_header Connection ""; 设置为""空值,则'不会传递'给后端服务器,相当于不指定'Connection'请求头

# proxy_set_header Connection 默认是'close',会'关闭'长连接;

# HTTP/1.1,如果不指定'Connection'请求头,默认值是'keep-alive',长连接

思考:HTTP/1.0如何建立长连接,协议'不一致'场景

  http协议中connection头的作用

  Connection RFC解释

④  了解ntlm即可

 使用NTLM的windows身份验证的nginx反向代理

优点:实现nginx代理ntlm验证,'无需lua编码'或使用商业版nginx plus

三      高级技巧

说明:关于'upstream'中的'keepalive'指令不再赘述

备注:只列出两个'核心'配置

核心:客户端自定义'请求头',决定'是否使用'长连接

浏览器提供的开发者工具通过Connection ID判断是否是长连接

tcpdump查看Nginx长连接还是短连接

长连接和端连接的应用场景

nginx与tomcat、client之间请求的长连接配置不一致问题解决  查看连接过程中socket状态

四    案例

①    现象

说明:'具体复现'后续有时间了再'重现'

nginx 分发请求错误日志报错upstream sent invalid chunked response while reading upstream

②    解决策略

背景:'nginx和upstream'之间通信,'nginx侧'未配置'长连接'导致

+++++++ location中'设置如下'即可 +++++++

 proxy_http_version 1.1;                         # 设置http版本为1.1
  
 proxy_set_header Connection "";                 # 设置Connection为长连接

③     chunk分片传输原理

client知道响应体大小的三种方式 

④      nginx的chunk模块 

一个是'内置的ngx_http_chunked_filter_module',是一个filter的模块,是'默认编译'进去的

1) 必须是'开启长连接'的HTTP/1.1

2) 请求和响应双方必须'同时存在'该头

其它参考 

 ⑤    nginx关闭chunked

++++++++++++'取消掉Transfer-Encoding:chunked'++++++++++++

方式1:'不让'服务器"这里特指nginx的后端服务器"返回Transfer-Encoding:chunked,在客户端"nginx端"请求的时候可以'使用http 1.0'的协议。

方式2:'nginx侧'-->chunked_transfer_encoding off;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx(二十七)长连接和短连接 的相关文章

随机推荐

  • iapp裕v3语言浏览器教程

    如果你要写简单的浏览器的话 你可以这么做qwq 创建好应用后先添加浏览器 他的属性为 width span class token operator 61 span span class token operator span span c
  • VMOS-Pro一款虚拟机app。

    vmos分为两个版本 xff1a 安卓vmos 安卓vmospro 两个的差距在于界面 xff0c 可以说vmospro是重磅更新了 xff0c 让我们了解这一款虚拟机吧 xff01 首先这两款虚拟机都是安卓系统 xff0c 你要ios上红
  • UTM虚拟机-首款iOS虚拟机

    utm虚拟机 xff1b 非越狱安装方法 utm虚拟机是一款ipa为后缀的文件 xff0c 需要爱思助手安装 越狱安装方法 使用uncover越狱后在安装ipa文件 utm介绍 他跟bochs limbo qemo apq等app一样 xf
  • 所有小米机型 解BT+刷Magisk并ROOT+躲避应用ROOT环境检查教程

    废话章节 xff0c 可以不看 时隔一年又回来了 上一篇文章还是在2021年更新的 xff0c 因为学业问题我这是1年1更显然不行 xff0c 那我这次为啥不更新iApp了 xff1f 因为忘得差不多了 我也没想到我有一天回过头来看自己的文
  • 【Minecraft】【ModPC】【我的世界】 我的世界电脑版如何进入网络游戏?

    我的世界电脑版如何进入网络游戏 xff1f 须知 看看就好 xff0c 不要频繁使用modpc xff0c 破坏游戏玩家体验 xff01 不知道为什么Win11会用着用着就会闪退 降级到Win10就什么事也没有 下载 ModPC下载 包含普
  • WindwosServer系统一些设置【网卡驱动修复】【安装UWP应用】【服务器管理取消开机自启动】

    WindwosServer系统一些设置 这里以2022为例 xff1a 第一 网卡驱动丢失修复 此教程只针对I219 V LM网卡 xff01 小知识 xff1a 当电脑没网时 xff0c 将手机和电脑用USB数据线连接 打开设置 xff1
  • dp最长不上升子序列 二分upper lower+贪心

    题意 找出最长不上升子序列长度 再找出最长不下降子序列最大长度 写法运用了指针 减少了代码量 include lt iostream gt include lt algorithm gt using namespace std const
  • 小米平板5ProWIFI(elish)刷ArrowOS

    文章目录 警告下载奇兔刷机系统本体及Recovery 清除数据刷入AospRec开始刷入警告 完成设置输入法 变砖头了qwq又是警告 芝士截图Root方法结尾 警告 此文章只针对 小米平板5Pro Wifi版本 xff08 elish xf
  • 【宝塔】【Windows】【Blessing-Skin】【我的世界】用宝塔Windows搭建皮肤站

    文章目录 前言所需环境相关链接安装宝塔安装步骤访问宝塔同意协议 安装环境安装WNMP添加站点 开始安装皮肤站配置网站配置Nginx URL重写规则 xff08 即 伪静态 xff09 配置PHP 安装皮肤站 一些小调整安装插件常见问题 插件
  • ping的详细过程学习笔记

    pc1 ping pc2 也就是pc1 xff1a 192 168 1 1 ping pc2 xff1a 192 168 1 2 属于同一网段的ping过程 步骤1 ping开始 即后台运行192 168 1 1 ping 192 168
  • FTPClient上传文件内容为空/损坏/缺失

    项目场景 xff1a 项目场景 xff1a 本地项目联调OA系统的时候 xff0c 在发送审批时会传送相关附件 xff0c 该附件由本地项目上传至FTP xff0c OA系统会根据我们提供的路径和文件名去FTP中找到该文件 问题描述 xff
  • Debian9桌面设置

    本文由荒原之梦原创 xff0c 原文链接 xff1a http zhaokaifeng com p 61 665 新安装的Debian9桌面上啥都没有 xff0c 就像这样 xff1a 图 1 虽然很简洁 xff0c 但是用着不是很方便 x
  • 爬虫遇到Cloudflare问题

    网址 xff1a https opensea io rankings sortBy 61 seven day volume 返回代码 xff1a 403 遇到的问题 xff1a Access denied api opensea io us
  • java servlet写的网页猜数小游戏

    几年前 xff0c 用java servlet 写了个猜数的网页小游戏 xff1b 今天看了觉得有点意思 xff0c 贴出来怀旧一下 xff1a 1 代码如下 xff1a package cn wzb import java io impo
  • 安卓-system.img镜像文件过大问题

    3126 5 1SDK预置过多apk时导致编译otapackage时报错处理 xff1a 1 修改prebuilts python linux x86 2 7 5 lib python2 7 zipfile py文件中为ZIP64 LIMI
  • 使用Tesseract-OCR识别图片中的文字并生成双层PDF

    识别图片中的文字并不是很困难 如果自己训练一个文字识别的深度学习程序去识别也是可以 xff0c 但是太费劲 Tesseract OCR是一个开源的文字识别引擎 xff0c 并且支持包括中文在内的多国语言 只要将语言配置上去 xff0c 就可
  • iptables(三)iptables命令详解

    一 语法规则 iptables t table COMMAND chain CONDITION j ACTION t table 是指 39 操作的表 39 filter nat mangle或raw 39 默认使用filter 39 CO
  • 单调栈lllll

    单调栈 xff0c 就是一个栈 xff0c 不过栈内元素保证单调性 即 xff0c 栈内元素要么从小到大 xff0c 要么从大到小 而单调栈维护的就是一个数前 后第一个大于 小于他的数 例题 xff1a P5788 模板 单调栈 例题就是一
  • cmake(六)Cmake添加工程子目录

    重点 xff1a 39 cmake3 39 和 39 make 39 命令 39 输出 39 的 39 深刻解读 39 备注 xff1a 当前阶段暂时不使用 39 IDE 39 工具 先 39 熟悉各指令 39 一 ADD SUBDIREC
  • nginx(二十七)长连接和短连接

    一 长连接和短连接 概念 1 39 HTTP 39 的长连接和短连接 39 本质 39 上是 39 TCP 39 长连接和短连接 2 在 39 HTTP 1 0 39 中默认使用 39 短 39 连接 解读 xff1a 客户端和服务器 39