詳解Nginx啟用proxy_buffer緩沖
顧名思義,proxy_buffer 是用于 proxy 模式的緩沖功能。本文介紹其基本用法。
buffer 是什么
buffer ,即緩沖區(qū),它在 Nginx 上發(fā)揮的作用就是 啟用一個(gè)緩沖區(qū),先在這個(gè)緩沖區(qū)內(nèi)進(jìn)行存儲(chǔ),再把數(shù)據(jù)發(fā)送出去 。和在線觀看視頻有點(diǎn)類似,先把視頻文件緩沖一部分到本地再開(kāi)始播放。
若沒(méi)有 buffer,數(shù)據(jù)將會(huì)直接從 Nginx 傳輸?shù)娇蛻舳?。假設(shè)如果客戶端的加載速度足夠快,你可以直接把 buffer 關(guān)掉,讓數(shù)據(jù)盡可能快地到達(dá)客戶端。
而使用 buffer,Nginx 將會(huì)臨時(shí)存儲(chǔ)后端 response 到緩沖區(qū),然后慢慢把數(shù)據(jù)發(fā)送到客戶端。啟用 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 模式(一般也可稱為反向代理)的 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è)客戶端一次只能從一個(gè) buffer 中讀取數(shù)據(jù)的同時(shí),剩下的 buffer 會(huì)被放到隊(duì)列中,等待發(fā)送到客戶端,這個(gè) directive 指定在這個(gè)狀態(tài)下的 buffer 的大小。
① 如果 proxy_buffers 關(guān)閉
Nginx不會(huì)嘗試獲取到后端服務(wù)器所有響應(yīng)數(shù)據(jù)之后才返回給客戶端,Nginx 會(huì)盡快把數(shù)據(jù)傳給客戶端,在數(shù)據(jù)傳完之前,Nginx 接收到的最大緩存大小不能超過(guò) proxy_buffer_size 。
② 如果 proxy_buffers 打開(kāi)
Nginx將會(huì)盡可能的讀取后端服務(wù)器的數(shù)據(jù)到buffer,直到proxy_buffers設(shè)置的所有buffer們被寫滿或者數(shù)據(jù)被讀取完(EOF),此時(shí)Nginx開(kāi)始向客戶端傳輸數(shù)據(jù),會(huì)同時(shí)傳輸這一整串buffer們。如果數(shù)據(jù)很大的話,Nginx會(huì)接收并把他們寫入到temp_file里去,大小由proxy_max_temp_file_size 控制?!府?dāng)數(shù)據(jù)沒(méi)有完全讀完的時(shí)候」,Nginx同時(shí)向客戶端傳送的buffer 大小 不能超過(guò) proxy_busy_buffers_size 「此句可能理解有誤」。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
nginx打印請(qǐng)求頭日志方法(親測(cè)可用)
之前想用nginx打印收到的請(qǐng)求的請(qǐng)求頭,但是只找到打印請(qǐng)求體的,沒(méi)有打印請(qǐng)求頭的,本文就來(lái)介紹一下nginx打印請(qǐng)求頭日志方法,感興趣的可以了解一下2023-11-11
基于Nginx+lua實(shí)現(xiàn)簡(jiǎn)單的XSS攻擊攔截
WAF即web應(yīng)用防火墻,Nginx是一個(gè)主流的代理服務(wù),除了本身的Nginx日志,作為用戶肯定也支持對(duì)請(qǐng)求信息進(jìn)行操作,?很多都是通過(guò)在代理服務(wù)器上掛載規(guī)則特征,實(shí)現(xiàn)軟件層面的軟WAF進(jìn)行WEB防護(hù),本文主要給大家介紹了Nginx+Lua實(shí)現(xiàn)一個(gè)簡(jiǎn)單的XSS攻擊攔截,需要的朋友可以參考下2024-01-01
Nginx安裝配置naxsi waf防火墻的方法實(shí)現(xiàn)
Naxsi是第三方nginx模塊,它也能有效防御,本文主要介紹了Nginx安裝配置naxsi waf防火墻的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
詳解如何設(shè)置Nginx實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射
在 Nginx 中實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射是一種常見(jiàn)的做法,本文詳細(xì)介紹如何設(shè)置 Nginx 實(shí)現(xiàn)內(nèi)外網(wǎng)端口映射,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10
Nginx配置參數(shù)中文說(shuō)明詳解(負(fù)載均衡與反向代理)
最近在看高性能Linux服務(wù)器構(gòu)建實(shí)戰(zhàn)的Nginx章節(jié),對(duì)其nginx介紹的非常詳細(xì),現(xiàn)把經(jīng)常用到的Nginx配置參數(shù)中文說(shuō)明摘錄和nginx做負(fù)載均衡的本人真實(shí)演示實(shí)例抄錄下來(lái)以便以后查看2020-03-03
nginx鏡像構(gòu)建的知識(shí)點(diǎn)及方法步驟詳解
這篇文章主要為大家介紹了nginx鏡像構(gòu)建的知識(shí)點(diǎn)詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
詳解Nginx的核心配置模塊中對(duì)于請(qǐng)求體的接受流程
這篇文章主要介紹了詳解Nginx的核心配置模塊中對(duì)于請(qǐng)求體的接受流程,包括其丟棄請(qǐng)求的過(guò)程,需要的朋友可以參考下2015-12-12
Nginx解決vue項(xiàng)目服務(wù)器部署及跨域訪問(wèn)后端詳解
跨域問(wèn)題在前后端分離項(xiàng)目很常見(jiàn),至于為什么會(huì)跨域,同源策略,百度各種博客都很詳細(xì),這里不再介紹,這篇文章主要給大家介紹了關(guān)于Nginx解決vue項(xiàng)目服務(wù)器部署及跨域訪問(wèn)后端的相關(guān)資料,需要的朋友可以參考下2022-11-11

