(1)接收客户端请求的包体:收完在转发还是边收边转发
Syntax: proxy_request_buffering on | off;
Default : proxy_request_buffering on;
Context: http,server,location

on:客户端网速较慢,上游服务并发处理能力低,适应高吞吐场景
off:更及时的响应,降低nginx读写磁盘的消耗(nginx需要先把client请求的body写入磁盘中,如果超出内存大小;
向上游发送需要再次读取磁盘),
一旦开始发送内容,proxy_next_upstream功能失败

(2)Syntax: client_body_buffer_size size;
Default: client_body_buffer_size 8k|16k;
Context: http,server,location

接收header的时候可能接收到一点点body,判断接收到的body是不是全部的body
[1]若接收头部时,已经接收完全部包体,则不分配
[2]若剩余待接收包体的长度小于client_body_buffer_size,则仅分配所需大小(content-length明确表示多少字节没有接收到)
(不管client是1G还是10G,我们都是一段一段收)
[3]分配client_body_buffer_size大小内存接收包体
    -关闭包体缓存时,该内存上内容及时发给上游
    -打开包体缓存,该段大小内存用完时,写入临时文件释放内存

(3)Syntax: client_body_in_single_buffer on|off;
Default: client_body_in_single_buffer off;
Context: http,server,location
如果这个变量打开.proxy_request_buffering这个变量就可以使用了

(4)最大包体长度限制:
Syntax: client_max_body_size size;
Default: client_max_body_size 1m;
Context: http,server,location
仅对请求头部中含有Content-Length有效超出最大长度后,返回413错误

(5)临时文件路径格式:
Syntax: client_body_temp_path path [level1 [level2[level3]]];
Default: client_body_temp_path client_body_temp;
Context: http,server,location
client_body_temp下面会建立几个子目录,每一个临时文件是一个很长的整数.原因:一个目录下不能存放
太多文件,文件太多导致存取速度非常慢(多级子目录)

(6)Syntax: client_body_in_file on|clean|off;
Default: client_body_in_file_only off;
Context: http,server,location
包体必须存放在文件中,需要定位问题
on:所有用户上传的body,一直保存在文件中.包括请求处理完毕,文件不会被删除掉
clean:用户上传的body必须写入文件,请求处理完成,会删除
off:如果body长度非常小,以及内存buffer_size超过body大小,不会写入文件

(7)读取包体的超时,则返回408错误
Syntax: client_body_timeout time;
Default: client_body_timeout 60s;
Context: http,server,location
两次读取body的最大时延,和tcp概念相关联,收到一段tcp报文,超过60s没收到认为超时

怎样处理body,我们怎样看待下游网速,以及上游网速,以及上游服务器处理性能.优化nginx吞吐量手段

91.接收用户请求包体的方式相关推荐

  1. 接收Http请求的几种方式

    最近在开发过程中,遇到了我们公司的几个老项目,采用的是传统单体项目,这种项目之间需要交互,项目A请求项目B,B将结果回调给A,我们采用了Http Post请求的方式,在接收Http请求的时候,遇到了不 ...

  2. nginx丢弃http包体处理

    http框架丢弃http请求包体和上一篇文章http框架接收包体, 都是由http框架提供的两个方法,供http各个模块调用,从而决定对包体做什么处理.是选择丢弃还是接收,都是由模块决定的.例如静态资 ...

  3. java webmethod 参数_java详解Spring接收web请求参数的方式

    本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...

  4. 怎么调用获取被创建的预制体_Go 语言 Web 编程系列—— 获取用户请求数据(上)...

    0.GET/POST 请求数据 在 PHP 中,可以直接通过全局变量 $_GET 和 $_POST 快速获取 GET/POST 请求数据,GET 请求数据主要是 URL 查询字符串中包含的参数,以前面 ...

  5. Postman中请求体提交方式

    Postman中请求体提交方式 x-www-form-urlencoded form-data raw binary x-www-form-urlencoded x-www-form-urlencod ...

  6. HTTP 请求包和响应包 (网络篇)

    HTTP 请求包和响应包: 1,HTTP请求包: 请求包:请求行,请求头,[空行],请求体 http://www.gov.cn/xinwen/2018-07/17/content_5307156.ht ...

  7. 数据接收中粘包及半包的处理

    数据接收中粘包及半包的处理 2006-10-16 09:45 from www.acejoy.com ACE网络编程开发论坛 作者:Qinglan 在使用TCP协议的网络应用中,不可避免需要处理的一个 ...

  8. c语言winpcap编程,c语言Winpcap编程结构并接收解析arp包

    c语言Winpcap编程构造并接收解析arp包 /* 程序功能: 1.构造arp包,并发送.程序参数顺序:源IP.目的IP.mac地址.flag 2.获取网络中的ARP数据包,解析数据包的内容.程序参 ...

  9. 计算机网络课程设计——发送和接收TCP数据包以及发送和捕获ARP数据包

    1.课程设计要求: 发送和接收TCP数据包:TCP是一种面向连接的.可靠的传输层协议.TCP协议工作在网络层IP协议的基础上.本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个T ...

最新文章

  1. gtkorphan清理孤立软件包
  2. 颠覆认知——Redis会遇到的15个「坑」,你踩过几个?
  3. 用Fiddler抓取手机APP数据包
  4. 数据库综合系列 之 存储过程
  5. SAP CRM Long text unit test preparation
  6. 使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证
  7. 团队作业—预则立他山之石
  8. Maven出现.lastUpdated结尾的文件问题及解决
  9. PHP 中 const define 的区别
  10. ajax id sort,带有ajax更新的Jqueryui可排序列表
  11. C语言职工工资管理系统
  12. Unsupervised Degradation Representation Learning for Blind Super-Resolution(基于无监督退化表示学习的盲超分辨率处理)
  13. NTP 时间服务器配置
  14. 网站卡其cdn后不能访问_关于网站使用CDN后无法登录的解决办法
  15. linux内核 sp什么意思,浅析基于ARM的Linux下的系统调用的实现
  16. 365天挑战LeetCode1000题——Day 120 基于时间的最大报酬问题模板
  17. QT 多线程中使用QCanBusDevice进行PCAN通讯时,无法正常发出数据
  18. 《关于UDEC7.0学习阶段心得|CSDN创作打卡》
  19. Geode 分布式缓存配置
  20. 中控考勤机BS版本server端开发 集成到自己的CRM 或者OA里面集成考勤机

热门文章

  1. Ecstore中的微信支付怎么样配置
  2. Oracle管理监控之sql developer配置与简单使用
  3. mine layer(2008 World Final C)
  4. Source Insight 4.0 常用设置
  5. 动态规划解决约瑟夫环问题
  6. 潭州Java中级班(day_13)-异常概述
  7. Luogu P2827 蚯蚓
  8. 【拼爹坑爹不比爹】深入理解css中position属性及z-index属性
  9. jmeter - 录制app接口
  10. mongodb安装、远程访问设置、管理命令、增删改查操作以及GUI