语法: | proxy_buffering on | off ;
|
默认值: | proxy_buffering on; |
上下文: | http , server , location
|
代理的时候,开启或关闭缓冲后端服务器的响应。
当开启缓冲时,nginx尽可能快地从被代理的服务器接收响应,再将它存入proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果响应无法整个纳入内存,那么其中一部分将存入磁盘上的临时文件。proxy_max_temp_file_size和proxy_temp_file_write_size指令可以控制临时文件的写入。
当关闭缓冲时,收到响应后,nginx立即将其同步传给客户端。nginx不会尝试从被代理的服务器读取整个请求,而是将proxy_buffer_size指令设定的大小作为一次读取的最大长度。
响应头“X-Accel-Buffering”传递“yes
”或“no
”可以动态地开启或关闭代理的缓冲功能。 这个能力可以通过proxy_ignore_headers指令关闭。
语法: | proxy_busy_buffers_size ;
|
默认值: | proxy_busy_buffers_size 8k|16k; |
上下文: | http , server , location
|
当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定
时,nginx一定会向客户端发送响应,直到缓冲小于此值。这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。该
默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍。
针对上述两个指令,我有两个问题:
1、当proxy buffering 开启的时候,nginx文档中说,nginx会读取完upstream完整应答后才向client进行转发,
而在proxy_busy_buffers_size中又说,nginx读取upstream应答到一定数量时,就会向client进行转发请求,二者之间是否矛盾呢?
2、proxy_busy_buffers_size中关于nginx读取upstream应答到一定数量时,就会向client进行转发请求,这个数量是多少呢?如何确定的?