详解Nginx启用proxy_buffer缓冲

  

顾名思义,proxy_buffer是用于代理模式的缓冲功能。本文介绍其基本用法。

  

<>强缓冲是什么

  

缓冲区,即缓冲区,它在Nginx上发挥的作用就是启用一个缓冲区,先在这个缓冲区内进行存储,再把数据发送出去。和在线观看视频有点类似,先把视频文件缓冲一部分到本地再开始播放。

  

若没有缓冲区,数据将会直接从Nginx传输到客户端。假设如果客户端的加载速度足够快,你可以直接把缓冲区关掉,让数据尽可能快地到达客户端。

  

而使用缓冲区,Nginx将会临时存储后端响应到缓冲区,然后慢慢把数据发送到客户端。启用缓冲的好处在于可以把数据一次性地发送给目标,相较于即时传输可以节约出这部分带宽。

  

顺带一提,Nginx全局配置中的tcp_nopush的作用就是数据包会累计到一定大小之后才会发送。而tcp_nodelay是尽快发送数据,所以若你启用了缓冲区,建议关闭tcp_nodelay。

  

下面总结下nginx缓冲区设置:

        proxy_buffer_size 4 k;   proxy_buffering>   proxy_buffering>   proxy_buffers 4 8 k;      

指定一个请求的缓冲区的数量和大小。

  

<强> proxy_buffer_size

        proxy_buffer_size 4 k;      

指定后端响应的缓冲区的大小。它是来自后端响应的一部分,它包含头,从反应分离出来。它仅用于限定标题的缓冲区,所以它的值比proxy_buffers更低。

  

proxy_buffer_size有一点特殊在于,无论proxy_buffering是否开启,proxy_buffer_size都会起作用。

  

<强> proxy_busy_buffers_size

        proxy_busy_buffers_size 12 k;      

忙时缓冲区的最大值。一个客户端一次只能从一个缓冲区中读取数据的同时,剩下的缓冲区会被放到队列中,等待发送到客户端,这个指令指定在这个状态下的缓冲的大小。

  

<强>①如果proxy_buffers关闭
  

  

Nginx不会尝试获取到后端服务器所有响应数据之后才返回给客户端,Nginx会尽快把数据传给客户端,在数据传完之前,Nginx接收到的最大缓存大小不能超过proxy_buffer_size。
  

  

<>强②如果proxy_buffers打开
  

  

Nginx将会尽可能的读取后端服务器的数据到缓冲区,直到proxy_buffers设置的所有缓冲们被写满或者数据被读取完(EOF),此时Nginx开始向客户端传输数据,会同时传输这一整串缓冲区们。如果数据很大的话,Nginx会接收并把他们写入到temp_file里去,大小由proxy_max_temp_file_size控制。”当数据没有完全读完的时候”,Nginx同时向客户端传送的缓冲大小不能超过proxy_busy_buffers_size”此句可能理解有误”。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

详解Nginx启用proxy_buffer缓冲