nginx(六十四)proxy模块(五)接收上游响应

news2024/9/22 0:47:30

一   接收上游的响应

前提: nginx与上游'建立'连接,把nginx生成的'请求(line、header、body)'信息发送给'上游'

补充: '上游'解析处理完之后,会发送'响应'

​核心: nginx如何'接收'、'解析'、'处理'上游响应行、响应头、响应体

下载大文件失败 

(1)接收上游的HTTP头部

①  proxy_buffer_size

建议值: 64k或'128k'
​
1)'接收(upstream模块处理的)'上游的'响应'头部,限制了上游'响应头'的大小

   补充: '处理'响应头部是'各个proxy模块'来处理的
 
2) 常见:响应头中的'Set-Cookies'特别长,'超过'了这个限制
 
error.log报错: upstream sent too big header while reading response header
 
思考: 如何获取'响应头'的大小 -->'$upstream_bytes_received'-'$upstream_response_length'
 
补充: 这个指令不受'proxy_buffering'指令开关的限制

(2)接收上游的HTTP包体  

②  proxy_buffering

1) 明确'on'和'off'对应的行为
 
2) 通过上游服务器的'X-Accel-Buffering(nginx认识)'响应头来控制nginx读取'上游响应'的行为
 
3) off --> nginx'一次'能接收的是'proxy_buffer_size'的大小,然后'发送'给客户端

③  proxy_buffers

说明: 即使开启了'proxy_buffering on',也'不一定'会将'body'写入磁盘

补充: 如果'响应body'很小,'内存(8*4k)'就可以接收,没有必要放入'磁盘文件(吸盘I/O比较慢)'中

④  proxy_max_temp_file_size  

细节点: 如果上游'返回(下载场景)'一个'很大(>1G)'的文件,临时文件'不足以容纳'会报错

⑤  proxy_temp_file_write_size

说明:nginx接收上游'body'后,'如果'需要放入'临时文件'中,每一次'向磁盘临时文件'写入的字节数

⑥  proxy_temp_path

(3)及时转发包体

⑦  proxy_busy_buffers_size  

说明: 从' proxy_buffer_size'和'proxy_buffers'开辟一块缓冲区,发送响应给客户端
 
举例: 上游发送'1G'的文件,nginx一旦收到'8k'或者'16k','及时转发body'给客户端
 
前提: ​proxy_buffering是'开启'才生效

作用: 虽然'缓存'了'上游'的响应,但是想'更快'的给'客户端'发送'部分'响应

(4)接收上游时网络速度 

⑧   proxy_read_timeout

两次read操作: 从'系统'socket缓冲区'调用两次read方法'读取内容的超时
 
大白话: 如果nginx'连续的 60s 内'没有收到后端服务器的' 1 个字节', nginx'主动'连接关闭

 

⑨  proxy_limit_rate

说明: 限制的是'读取上游返回响应'的速度

(5)上游包体的持久化 

 ⑩   proxy_store

1) 上游包体的'持久化'
 
2) 在做'文件缓存服务器'场景下很合适
 
3) 相当于'偷偷'复制了一份'body'

++++++++++ 'proxy store 与proxy cache的区别'  ++++++++++

proxy store'不提供'缓存过期更新、内存索引建立等功能,缓存文件'一直会保存'在本地磁盘中

⑪  proxy_store_access

二    案例讲解指令

 通过下载大文件失败了解各指令的含义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文了解 Go 的复合数据类型(数组、Slice 切片、Map)

一文了解 Go 的复合数据类型[数组、切片 Slice、Map]前言数组数组的创建方式数组的遍历Slice 切片切片的创建方式切片的遍历向切片追加元素MapMap 的创建方式Map 的基本操作插入和修改删除查找操作遍历操作删除操作小结耐心和持久胜过激烈和狂热。 前言 上一篇文章一文熟悉 Go…

CMake Cookbook by Eric

I. Basics 关键字&#xff1a;CMake中的构建指令 指令的书写是大小写无关的&#xff1b; II. Project&#xff1a;指定项目名称和语言类型 命令格式&#xff1a;project(<PROJECT-NAME> [<language-name>...]) Note 项目名称<PROJECT-NAME>不需要与项目根…

论文阅读【7】HHM隐马尔科夫模型

1.隐马尔科夫模型&#xff08;HMM&#xff09;的介绍 隐马尔科夫模型有两个序列&#xff0c;上面一层序列的值称之为影藏值(隐式变量)&#xff0c;下面一个序列中的值被称为观察值&#xff0c;想这个的序列模型被称为生成模型&#xff08;Generate model&#xff09;。z表示的是…

Linux - lsof显示 tcp,udp 的端口和进程

文章目录功能语法示例lsof -i 显示 tcp&#xff0c;udp 的端口和进程等相关查看服务器 80 端口的占用情况使用 -p 查看指定进程打开的文件更多命令功能 lsof&#xff08;list open files&#xff09;是一个列出当前系统打开文件的工具。 lsof 需要访问核心内存和各种文件&…

【区块链技术与应用】(八)

https://blog.csdn.net/lakersssss24/article/details/125762826?spm1001.2014.3001.5501 https://blog.csdn.net/lakersssss24/article/details/126434147 https://blog.csdn.net/lakersssss24/article/details/126671408?spm1001.2101.3001.6650.3&utm_mediumdistribut…

[附源码]java毕业设计医院仪器设备管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

cubeIDE开发, stm32的OLED点亮及字符显示设计(基于SPI通信)

一、SPI 通信技术 显示屏&#xff08;LCD、OLED&#xff09;接口一般有I2C、SPI、UART、RGB、LVDS、MIPI、EDP和DP等。一般3.5寸以下的小尺寸LCD屏&#xff0c;显示数据量比较少&#xff0c;普遍采用低速串口&#xff0c;如I2C、SPI、UART。SPI&#xff08;Serial Peripheral I…

通用后台管理系统前端界面Ⅹ——前端数据表格的删除、查找

删除操作 1、拿到id或者行数据对象 2、查看后端接口方法&#xff0c;写api方法&#xff0c;将操作连接上后端 后端请求操作成功&#xff0c;但是前端数据表格未更新&#xff0c;最简单的一种方法数据删除后要重新获取数据》 依旧显示成功&#xff0c;但是前端数据表格未变化&…

Bert and its family

Bert没有办法一次性读入特别长的文本的问题。自注意力机制非常消耗时间和空间。 概率值最大取argmax&#xff0c;对应的下标 整体全部更新&#xff0c;所有参数都更新&#xff0c;比固定住pre-trained要好很多。 不做预训练&#xff0c;loss下降比较慢&#xff0c;收敛比较慢&a…

BIM在工程中的20种典型功能

1、BIM模型维护 根据项目建设进度建立和维护BIM模型&#xff0c;实质是使用BIM平台汇总各项目团队所有的建筑工程信息&#xff0c;消除项目中的信息孤岛&#xff0c;并且将得到的信息结合三维模型进行整理和储存&#xff0c;以备项目全过程中项目各相关利益方随时共享。 由于…

Java 微信关注/取消关注事件

Java 微信关注/取消关注事件一、需求、思路二、文档、配置配置步骤1配置步骤2三、代码1、引入依赖包2、controller3、封装消息对象4、service、解密5、工具包一、需求、思路 需求&#xff1a;用户订阅/取消订阅公众号时接收消息并保存到数据库中以便后续功能的处理。 思路&…

【分类-SVDD】基于支持向量数据描述 (SVDD) 的多类分类算法附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

机器学习-回归模型相关重要知识点

目录01 线性回归的假设是什么&#xff1f;02 什么是残差&#xff0c;它如何用于评估回归模型&#xff1f;03 如何区分线性回归模型和非线性回归模型&#xff1f;04 什么是多重共线性&#xff0c;它如何影响模型性能&#xff1f;05 异常值如何影响线性回归模型的性能&#xff1f…

Springboot Security 前后端分离模式自由接口最小工作模型

但凡讲解Springboot Security的教程&#xff0c;都是根据其本身的定义&#xff0c;前后端整合在一起&#xff0c;登录采用form或者basic。我们现在的很多项目&#xff0c;前后端分离&#xff0c;form登录已经不适用了。很多程序的架构要求所有的接口都采用application/json方式…

RabbitMQ顺序性、可靠性、重复消费、消息堆积解决方案

RabbitMQ顺序性、可靠性&#xff08;消息丢失&#xff09;、重复消费、消息堆积解决方案 顺序性 RabbitMQ使用过程中&#xff0c;有些业务场景需要我们保证顺序消费&#xff0c;例如&#xff1a;业务上产生三条消息&#xff0c;分别是对数据的增加、修改、删除操作&#xff0…

【Java八股文总结】之Linux常用指令

文章目录Linux简介一、Linux目录结构二、Linux常用指令Linux简介 一、Linux目录结构 bin&#xff08;binaries&#xff09;&#xff1a;存放二进制可执行文件。 sbin&#xff08;super user binaries&#xff09;&#xff1a;存放二进制可执行文件&#xff0c;只有root才能访…

怎么把图片转换成表格?分享三个简单方法给你

你们是否在工作的时候会遇到这样的情况&#xff1a;收到同事发来的一张表格图片&#xff0c;需要你进行汇总登记&#xff0c;通常这种时候&#xff0c;你们都会怎么做呢&#xff1f;是根据图片的内容&#xff0c;手动输入制作成一份表格吗&#xff1f;虽然这样子可以进行表格的…

c++ 旅行商问题(动态规划)

目录一、旅行商问题简介旅行商问题问题概述问题由来二、基本思路三、实现1、状态压缩2、状态转移四、代码复杂度分析一、旅行商问题简介 旅行商问题 TSP&#xff0c;即旅行商问题&#xff0c;又称TSP问题&#xff08;Traveling Salesman Problem&#xff09;&#xff0c;是数学…

网络编程基础知识

文章目录1、网络概念2、协议3、网络分层4、网络传输流程5、端口号1、网络概念 先有计算机还是先有网络呢&#xff1f; 答案是先有计算机&#xff0c;为了数据研究和沟通的需求产生的网络&#xff0c;网络的产生是为了提升效率的。 那什么是网络呢&#xff1f; 网络指的是网络协…

实现一个自定义的vue脚手架

开发背景 博客很久没有更新了&#xff0c; 今天更新一个好玩的&#xff0c;等我将vue3的东西彻底搞明白我会更新一个vue3的系列&#xff0c;到时候会更新稍微勤一点&#xff0c;在使用vuecli的时候发现他的脚手架很有意思&#xff0c;用了几年了&#xff0c;但是一直没有好好研…