Nginx 緩衝區設置 proxy_buffers相關配置

1. proxy_buffering

語法:proxy_buffering on|off

默認值:proxy_buffering 0n

上下文:http,server,location

該 指令開啓從後端被代理服務器的響應內容緩衝。如果緩衝區開啓,nginx假定被代理的後端服務器會以最快速度響應,並把內容保存在由指令 proxy_buffer_size 和 proxy_buffers指定的緩衝區裏邊.如果響應內容無法放在內存裏邊,那麼部分內容會被寫到磁盤上。如果緩衝區被關閉了,那麼響應內容會按照獲取 內容的多少立刻同步傳送到客戶端。nginx不嘗試計算被代理服務器整個響應內容的大小,nginx能從服務器接受的最大數據,是由指令 proxy_buffer_size指定的.對於基於長輪詢(long-polling)的Comet 應用來說,關閉 proxy_buffering 是重要的,不然異步響應將被緩存導致Comet無法工作。

 

2. proxy_buffers

語法:proxy_buffers  數量  大小

默認值:proxy_buffers 8  4k/8k

上下文:http,server,location

該指令設置緩衝區的大小和數量,從被代理的後端服務器取得的響應內容,會放置到這裏. 默認情況下,一個緩衝區的大小等於內存頁面大小,可能是4K也可能是8K,這取決於平臺。

3. proxy_buffer_size

語法:proxy_buffer_size  the size

默認值:proxy_buffer_size 4k/8k

上下文:http,server,location

該指令設置緩衝區大小,從代理後端服務器取得的第一部分的響應內容,會放到這裏.小的響應header通常位於這部分響應內容裏邊.默認來說,該緩衝區大小等於指令 proxy_buffers所設置的;但是,你可以把它設置得更小.

4. proxy_busy_buffers_size

語法:proxy_busy_buffers_size                大小

默認值:proxy_busy_buffers_size  proxy_buffer_size*2

上下文:http,server,location,if

buffer 工作原理

1. 所有的proxy buffer參數是作用到每一個請求的。每一個請求會安按照參數的配置獲得自己的buffer。proxy buffer不是global而是per request的。

2. proxy_buffering 是爲了開啓response buffering of the proxied server,開啓後proxy_buffers和proxy_busy_buffers_size參數纔會起作用。

3. 無論proxy_buffering是否開啓,proxy_buffer_size(main buffer)都是工作的,proxy_buffer_size所設置的buffer_size的作用是用來存儲upstream端response的header。

4. 在proxy_buffering 開啓的情況下,Nginx將會盡可能的讀取所有的upstream端傳輸的數據到buffer,直到proxy_buffers設置的所有buffer們 被寫滿或者數據被讀取完(EOF)。此時nginx開始向客戶端傳輸數據,會同時傳輸這一整串buffer們。同時如果response的內容很大的 話,Nginx會接收並把他們寫入到temp_file裏去。大小由proxy_max_temp_file_size控制。如果busy的buffer 傳輸完了會從temp_file裏面接着讀數據,直到傳輸完畢。

5. 一旦proxy_buffers設置的buffer被寫入,直到buffer裏面的數據被完整的傳輸完(傳輸到客戶端),這個buffer將會一直處 在busy狀態,我們不能對這個buffer進行任何別的操作。所有處在busy狀態的buffer size加起來不能超過proxy_busy_buffers_size,所以proxy_busy_buffers_size是用來控制同時傳輸到客戶 端的buffer數量的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章