启用或禁用来自代理服务器的响应缓冲。
语法: 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
不会尝试从代理服务器读取整个响应。nginx
一次可以从服务器接收的数据的最大大小由proxy_buffer_size
指令控制。
代理服务器还可以通过在X-Accel-Buffering
响应标头字段中 传递yes
或no
来启用/禁用缓冲,前提是nginx
没有设置proxy_ignore_headers X-Accel-Buffering
指令禁用此功能 。
对于长轮询(Long-Polling
,也有人称作Comet
、反向AJAX
)、Server-Sent Events
这类应用来说,关闭proxy_buffering
是十分有必要的,不然异步响应将会被缓存而导致这类应用无法工作。
无论proxy_buffering
是否开启,proxy_buffer_size
都是生效的。
语法: proxy_buffers number size;
默认值: proxy_buffers 8 4k|8k;
指令生效范围: http, server, location
设置缓冲区的大小和数量。默认情况下,一个缓冲区大小size
等于内存页大小,可能是4K也可能是8k。proxy_buffers
由缓冲区数量number
和缓冲区大小size
组成的。总的大小为number*size
。
如果某些请求响应过大,这时超出proxy_buffers
的部分将被缓冲到硬盘(缓冲目录由proxy_temp_path
指令决定),当然这将会使读取响应的速度变慢,影响用户体验,可以使用proxy_max_temp_file_size
指令关闭磁盘缓冲。
语法: proxy_buffer_size size;
默认值: proxy_buffer_size 4k|8k;
指令生效范围: http, server,location
设置响应头的缓冲区大小。因为只是响应头的缓冲区,因此没必要设置太大。设置4k或8k取决于操作系统。无论proxy_buffering
是否开启,proxy_buffer_size
都是工作的。
语法: proxy_busy_buffers_size size;
默认值: proxy_busy_buffers_size 8k|16k;
指令生效范围: http, server, location
proxy_busy_buffers_size
不是独立的空间,他是proxy_buffers
和proxy_buffer_size
的一部分。nginx
会在没有完全读完后端响应的时候就开始向客户端传送数据,所以它会划出一部分缓冲区来专门向客户端传送数据(这部分的大小是由proxy_busy_buffers_size
来控制的,建议为proxy_buffers
中单个缓冲区大小的2倍),然后它继续从后端取数据,缓冲区满了之后就写到磁盘的临时文件中。
语法: proxy_temp_path path [level1 [level2 [level3]]];
默认值: proxy_temp_path proxy_temp;
指令生效范围: http, server, location
定义用于存储临时文件的目录,其中包含从代理服务器接收到的数据。 指定目录下最多可以使用三级子目录层次结构。 参考配置如下:
proxy_temp_path /spool/nginx/proxy_temp 1 2;
临时文件可能像这样:
/spool/nginx/proxy_temp/7/45/00000123457
这里的level1,2,3如果有值就代表存在一级,二级,三级子目录。目录名是由数字进行命名的,所以这里的具体的值就是代表目录名的数字位数。
语法: proxy_max_temp_file_size size;
默认值: proxy_max_temp_file_size 1024m;
指令生效范围: http, server, location
设置临时文件的最大值。如果超过了这个值, Nginx
将与代理服务器同步地传递内容,而不再缓冲到硬盘。设置为0时,则直接关闭硬盘缓冲。
语法: proxy_temp_file_write_size size;
默认值: proxy_temp_file_write_size 8k|16k;
指令生效范围: http, server, location
设置一次访问能写入的临时文件的大小。默认是proxy_buffer_size
和proxy_buffers
中设置的缓冲区大小的2倍。