久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

詳解Nginx啟用proxy_buffer緩沖

2019-11-28 16:53:08 11465

顧名思義,proxy_buffer 是用于 proxy 模式的緩沖功能。本文介紹其基本用法。


buffer 是什么


buffer ,即緩沖區(qū),它在 Nginx 上發(fā)揮的作用就是 啟用一個(gè)緩沖區(qū),先在這個(gè)緩沖區(qū)內(nèi)進(jìn)行存儲(chǔ),再把數(shù)據(jù)發(fā)送出去 。和在線(xiàn)觀看視頻有點(diǎn)類(lèi)似,先把視頻文件緩沖一部分到本地再開(kāi)始播放。


若沒(méi)有 buffer,數(shù)據(jù)將會(huì)直接從 Nginx 傳輸?shù)娇蛻?hù)端。假設(shè)如果客戶(hù)端的加載速度足夠快,你可以直接把 buffer 關(guān)掉,讓數(shù)據(jù)盡可能快地到達(dá)客戶(hù)端。


而使用 buffer,Nginx 將會(huì)臨時(shí)存儲(chǔ)后端 response 到緩沖區(qū),然后慢慢把數(shù)據(jù)發(fā)送到客戶(hù)端。啟用 buffer 的好處在于可以把數(shù)據(jù)一次性地發(fā)送給目標(biāo),相較于即時(shí)傳輸可以節(jié)約出這部分帶寬。


順帶一提,Nginx 全局配置中的 tcp_nopush 的作用就是 數(shù)據(jù)包會(huì)累計(jì)到一定大小之后才會(huì)發(fā)送 。而 tcp_nodelay 是盡快發(fā)送數(shù)據(jù),所以若你啟用了 buffer,建議關(guān)閉 tcp_nodelay。


下面總結(jié)下 nginx buffer 設(shè)置:


proxy_buffer_size 4k;

proxy_buffering on;

proxy_buffers 4 4k;

proxy_busy_buffers_size 8k;

proxy_max_temp_file_size 1024m;

首先,這些參數(shù)都是針對(duì)每一個(gè)http request ,不是全局的。


proxy_buffer 的配置


proxy_buffer 是用于 proxy 模式(一般也可稱(chēng)為反向代理)的 buffer 配置。Nginx 有另外一種適用于 server 模式的 buffer 配置,這里本帖不做介紹。


proxy_buffer 包括了以下配置項(xiàng):


需注意,以下指定的數(shù)值都是針對(duì)每一個(gè) http request 的上限,而不是對(duì)于整個(gè) buffer 區(qū)指定的上限。


proxy_buffering


proxy_buffering on;

在 proxy_buffering 開(kāi)啟的時(shí)候,proxy_buffers 和 proxy_busy_buffers_size 才會(huì)起作用。


proxy_buffers


proxy_buffers 4 8k;

指定一個(gè) request 的 buffer 的數(shù)量和大小。


proxy_buffer_size


proxy_buffer_size 4k;

指定后端 response 的 buffer 的大小。它是來(lái)自后端 response 的一部分,它包含 Headers,從 response 分離出來(lái)。它僅用于限定 headers 的 buffer 區(qū),所以它的值比 proxy_buffers 更低。


proxy_buffer_size 有一點(diǎn)特殊在于,無(wú)論 proxy_buffering 是否開(kāi)啟,proxy_buffer_size 都會(huì)起作用。


proxy_busy_buffers_size


proxy_busy_buffers_size 12k;

忙時(shí) buffer 的最大值。一個(gè)客戶(hù)端一次只能從一個(gè) buffer 中讀取數(shù)據(jù)的同時(shí),剩下的 buffer 會(huì)被放到隊(duì)列中,等待發(fā)送到客戶(hù)端,這個(gè) directive 指定在這個(gè)狀態(tài)下的 buffer 的大小。


① 如果 proxy_buffers 關(guān)閉

Nginx不會(huì)嘗試獲取到后端服務(wù)器所有響應(yīng)數(shù)據(jù)之后才返回給客戶(hù)端,Nginx 會(huì)盡快把數(shù)據(jù)傳給客戶(hù)端,在數(shù)據(jù)傳完之前,Nginx 接收到的最大緩存大小不能超過(guò) proxy_buffer_size 。

② 如果 proxy_buffers 打開(kāi)

Nginx將會(huì)盡可能的讀取后端服務(wù)器的數(shù)據(jù)到buffer,直到proxy_buffers設(shè)置的所有buffer們被寫(xiě)滿(mǎn)或者數(shù)據(jù)被讀取完(EOF),此時(shí)Nginx開(kāi)始向客戶(hù)端傳輸數(shù)據(jù),會(huì)同時(shí)傳輸這一整串buffer們。如果數(shù)據(jù)很大的話(huà),Nginx會(huì)接收并把他們寫(xiě)入到temp_file里去,大小由proxy_max_temp_file_size 控制。「當(dāng)數(shù)據(jù)沒(méi)有完全讀完的時(shí)候」,Nginx同時(shí)向客戶(hù)端傳送的buffer 大小 不能超過(guò) proxy_busy_buffers_size 「此句可能理解有誤」。


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: