关于nginx proxy buffer 疑惑

380 views
Skip to first unread message

3169...@qq.com

unread,
Jul 5, 2018, 11:39:14 PM7/5/18
to openresty
大家好,
语法:proxy_buffering on | off;
默认值:
proxy_buffering on;
上下文:httpserverlocation

代理的时候,开启或关闭缓冲后端服务器的响应。

当开启缓冲时,nginx尽可能快地从被代理的服务器接收响应,再将它存入proxy_buffer_sizeproxy_buffers指令设置的缓冲区中。如果响应无法整个纳入内存,那么其中一部分将存入磁盘上的临时文件proxy_max_temp_file_sizeproxy_temp_file_write_size指令可以控制临时文件的写入。

当关闭缓冲时,收到响应后,nginx立即将其同步传给客户端。nginx不会尝试从被代理的服务器读取整个请求,而是将proxy_buffer_size指令设定的大小作为一次读取的最大长度。

响应头“X-Accel-Buffering”传递“yes”或“no”可以动态地开启或关闭代理的缓冲功能。 这个能力可以通过proxy_ignore_headers指令关闭。


语法:proxy_busy_buffers_size size;
默认值:
proxy_busy_buffers_size 8k|16k;
上下文:httpserverlocation

当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。该大小默认是proxy_buffer_sizeproxy_buffers指令设置单块缓冲大小的两倍。


针对上述两个指令,我有两个问题:



1、当proxy buffering 开启的时候,nginx文档中说,nginx会读取完upstream完整应答后才向client进行转发,

而在proxy_busy_buffers_size中又说,nginx读取upstream应答到一定数量时,就会向client进行转发请求,二者之间是否矛盾呢?


2、proxy_busy_buffers_size中关于nginx读取upstream应答到一定数量时,就会向client进行转发请求,这个数量是多少呢?如何确定的?


tokers

unread,
Jul 5, 2018, 11:47:36 PM7/5/18
to openresty
Hello!

> 1、当proxy buffering 开启的时候,nginx文档中说,nginx会读取完upstream完整应答后才向client进行转发,


不是读完全部的响应。是会在该指令启用时,使用 proxy_buffers 指定的 buffer 数量和大小,尽可能缓冲上游的响应,当然,如果你还允许 nginx 缓冲到磁盘,那么部分响应也可能被保存到磁盘当中去。


> 而在proxy_busy_buffers_size中又说,nginx读取upstream应答到一定数量时,就会向client进行转发请求,二者之间是否矛盾呢?


prox_busy_buffers_size 指的是,在尝试往下游发送的时候,最多一次发送多少字节的内容。


Reply all
Reply to author
Forward
0 new messages