語法: proxy_buffer_size the_sizenginx
默認值: proxy_buffer_size 4k/8k後端
上下文: http, server, location緩存
該指令設置緩衝區大小,從代理後端服務器取得的第一部分的響應內容,會放到這裏.服務器
小的響應header一般位於這部分響應內容裏邊.異步
默認來講,該緩衝區大小等於指令 proxy_buffers所設置的;可是,你能夠把它設置得更小.ide
語法: proxy_buffering on|offoop
默認值: proxy_buffering on大數據
上下文: http, server, locationspa
該指令開啓從後端被代理服務器的響應內容緩衝..net
若是緩衝區開啓,nginx假定被代理的後端服務器會以最快速度響應,並把內容保存在由指令proxy_buffer_size 和 proxy_buffers指定的緩衝區裏邊.
若是響應內容沒法放在內存裏邊,那麼部份內容會被寫到磁盤上。
若是緩衝區被關閉了,那麼響應內容會按照獲取內容的多少馬上同步傳送到客戶端。
nginx不嘗試計算被代理服務器整個響應內容的大小,nginx能從服務器接受的最大數據,是由指令proxy_buffer_size指定的.
對於基於長輪詢(long-polling)的Comet 應用來講,關閉 proxy_buffering 是重要的,否則異步響應將被緩存致使Comet沒法工做
語法: proxy_buffers the_number is_size;
默認值: proxy_buffers 8 4k/8k;
上下文: http, server, location
該指令設置緩衝區的大小和數量,從被代理的後端服務器取得的響應內容,會放置到這裏. 默認狀況下,一個緩衝區的大小等於內存頁面大小,多是4K也多是8K,這取決於平臺。
語法: proxy_busy_buffers_size size;
默認值: proxy_busy_buffers_size proxy_buffer_size * 2;
上下文: http, server, location, if
TODO: Description.
首先第一個概念是全部的這些proxy buffer參數是做用到每個請求的。每個請求會安按照參數的配置得到本身的buffer。proxy buffer不是global而是per request的。
proxy_buffering 是爲了開啓response buffering of the proxied server,開啓後proxy_buffers和proxy_busy_buffers_size參數纔會起做用。
不管proxy_buffering是否開啓,proxy_buffer_size(main buffer)都是工做的,proxy_buffer_size所設置的buffer_size的做用是用來存儲upstream端response的header。
在proxy_buffering 開啓的狀況下,Nginx將會盡量的讀取全部的upstream端傳輸的數據到buffer,直到proxy_buffers設置的全部buffer們被寫滿或者數據被讀取完(EOF)。此時nginx開始向客戶端傳輸數據,會同時傳輸這一整串buffer們。同時若是response的內容很大的話,Nginx會接收並把他們寫入到temp_file裏去。大小由proxy_max_temp_file_size控制。若是busy的buffer傳輸完了會從temp_file裏面接着讀數據,直到傳輸完畢。
一旦proxy_buffers設置的buffer被寫入,直到buffer裏面的數據被完整的傳輸完(傳輸到客戶端),這個buffer將會一直處在busy狀態,咱們不能對這個buffer進行任何別的操做。全部處在busy狀態的buffer size加起來不能超過proxy_busy_buffers_size,因此proxy_busy_buffers_size是用來控制同時傳輸到客戶端的buffer數量的。