proxy_buffering 主要是实现被代理服务器的数据和客户端的请求异步

为了方便理解,我们定义三个角色,A为客户端,B为代理服务器,C为被代理服务器。

当proxy_buffering开启,A发起请求到B,B再到C,C反馈的数据先到B的buffer上,然后B会根据proxy_busy_buffer_size来决定什么时候开始把数据传输给A。

在此过程中,如果所有的buffer被写满,数据将会写入到temp_file中。

相反,如果proxy_buffering关闭,C反馈的数据实时地通过B传输给A。

以下配置,都是针对每一个http请求的:

1. proxy_buffering  on;
该参数设置是否开启proxy的buffer功能,参数的值为on或者off。
如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。 
但是无论proxy_buffering是否开启,proxy_buffer_size都是生效的

2. proxy_buffer_size  4k;
该参数用来设置一个特殊的buffer大小的。
从被代理服务器(C)上获取到的第一部分响应数据内容到代理服务器(B)上,通常是header,就存到了这个buffer中。 
如果该参数设置太小,会出现502错误码,这是因为这部分buffer不够存储header信息。建议设置为4k。

3. proxy_buffers  8  4k;
这个参数设置存储被代理服务器上的数据所占用的buffer的个数和每个buffer的大小。
所有buffer的大小为这两个数字的乘积。

4. proxy_busy_buffer_size 16k;
在所有的buffer里,我们需要规定一部分buffer把自己存的数据传给A,这部分buffer就叫做busy_buffer。
proxy_busy_buffer_size参数用来设置处于busy状态的buffer有多大。

对于B上buffer里的数据何时传输给A,我个人的理解是这样的:
1)如果完整数据大小小于busy_buffer大小,当数据传输完成后,马上传给A;
2)如果完整数据大小不少于busy_buffer大小,则装满busy_buffer后,马上传给A;

5. proxy_temp_path
语法:proxy_temp_path  path [level1 level2 level3]
定义proxy的临时文件存在目录以及目录的层级。

例:proxy_temp_path /usr/local/nginx/proxy_temp 1 2;
其中/usr/local/nginx/proxy_temp为临时文件所在目录,1表示层级1的目录名为1个数字(0-9),2表示层级2目录名为2个数字(00-99)

6. proxy_max_temp_file_size
设置临时文件的总大小,例如 proxy_max_temp_file_size 100M;

7. proxy_temp_file_wirte_size
设置同时写入临时文件的数据量的总大小。通常设置为8k或者16k。

配置示例:

server
{listen 80;server_name www.aminglinux.com;proxy_buffering on;proxy_buffer_size 4k;proxy_buffers 2 4k;proxy_busy_buffers_size 4k;proxy_temp_path /tmp/nginx_proxy_tmp 1 2;proxy_max_temp_file_size 20M;proxy_temp_file_write_size 8k;location /{proxy_pass      http://192.168.10.110:8080/;proxy_set_header Host   $host;proxy_set_header X-Real-IP      $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

nginx 反向代理之 proxy_buffering相关推荐

  1. Nginx 反向代理工作原理简介与配置详解

    Nginx 反向代理工作原理简介与配置详解 测试环境 CentOS 6.8-x86_64 nginx-1.10.0 下载地址:http://nginx.org/en/download.html 安装 ...

  2. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

  3. keepalived实现高可用nginx反向代理(Web集群)

    一.代理服务器概述 代理服务可简单的分为正向代理和反向代理: 1)正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务 ...

  4. docker安装_使用docker在带有SSL的Nginx反向代理后面部署Quarkus或任何基于Java的微服务...

    docker安装 已经有一段时间了,但是根据一位朋友的要求,我将向您展示如何使用docker在Nginx反向代理后面部署Quarkus微服务. 我们会做什么- 我将在centos 8主机上安装dock ...

  5. nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  6. nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除

    一,nginx反向代理配置 #tomcat 显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向nginx所在IP)的时候(或将 ...

  7. nginx反向代理原理讲解

    一 .概述                  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果 ...

  8. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...

  9. Nginx——反向代理

    通过Nginx来实现反向代理,具体配置实例如下所示: 一.反向代理实例一 1.目标 在浏览器地址栏输入www.test.com,可跳转到linux系统tomcat的主页面中. 2.前置工作 (1)在l ...

最新文章

  1. linux内核参数优化 for 高并发服务器
  2. 按钮开始多线程_微软MR技术专家分享:AR/VR多线程处理的八年经验与技巧
  3. ANSYS——固定斜度的变截面变截面的定义、自由耦合和变截面的定义
  4. python print 输出到txt_(Python基础教程之七)Python字符串操作
  5. 2016 博客导读总结 amp; 个人感悟
  6. lisp医院化验系统_医院智能导视系统
  7. 卡巴斯基激活试用方法
  8. 【think server rd340安装windows server 2008 R2 同时安装RAID驱动程序】
  9. JavaScript--对象类型详解
  10. 分解质因数_java
  11. 构筑城市生命线:应急管理需要新思路,全域能力成关键
  12. 620集成显卡和mx250,残血还是满血?一招看清MX250显卡真面目
  13. 2021-10-26 2021年B站1024安全攻防题第五题(安卓逆向)
  14. 解决谷歌浏览器被篡改主页问题
  15. 21考研复习规划和北邮计算机考研介绍
  16. 缓慢画点功能实现的两个方法
  17. Redis缓存详解(黑马-未完结)
  18. Java SWT的Composite控件刷新
  19. 把虚拟机迁移到云服务器,VMware业务系统迁移上云方案
  20. 弘辽科技:淘宝新店提升销量可以吗?怎么提升关键词?

热门文章

  1. 小米10系统版本Android,小米10的安卓11稳定版本再次正式推送
  2. 100行代码教你爬取斗图网(Python多线程队列)
  3. python解析jason数据
  4. python读取pdf表格_Python 解析 PDF 表格?
  5. 苹果真的赢得了“世纪大战”吗?
  6. php文件断点续传,php文件下载限速,文件断点续传,多线程下载文件原理解析
  7. 电脑特别,电脑太卡怎么办,教您电脑很卡如何解决
  8. 2020-10-22 | 华为手机通讯录导入
  9. js树形菜单求出最大的年龄
  10. 英语口语练习系列-C21-美式幽默