一、proxy_buffers介紹
在使用Nginx作為反向代理服務器時,我們需要緩存代理服務器返回的數據,以便後續快速響應客戶端請求。proxy_buffers就是Nginx提供的一個緩存設置指令。
proxy_buffers的作用是設置代理響應緩存的大小和數量。當代理響應不適合直接從代理服務器返回時,Nginx會將響應數據緩存在proxy_buffers指定的緩存區中,然後再逐段向客戶端傳輸。
二、proxy_buffer設置
1. proxy_buffers
proxy_buffers指令指定用於緩存響應數據段的緩存區的數量和大小。其語法如下:
proxy_buffers number size;
number:指定緩存區的數量,通常設置為客戶端需要展示的頁面最大位元組數除以緩存區大小。
size:指定每個緩存區的大小,建議設置為4k-16k之間。當接收到的數據超過緩存區大小時,Nginx將緩存響應的前size位元組,並將數據段放入剩餘緩存區中。
代碼示例:
proxy_buffers 4 16k;
2. proxy_buffer
proxy_buffer指令設置一個緩存區的大小。當響應的數據段超過緩存區大小時,該數據段將被分成多個緩存區並緩存。
語法如下:
proxy_buffer_size size;
代碼示例:
proxy_buffer_size 8k;
3. proxy_buffering off
proxy_buffering off指令禁用緩存功能。當該指令為on時,即默認使用緩存功能。
代碼示例:
proxy_buffering off;
三、proxy_buffers緩衝
1. proxy_buffers緩衝作用
proxy_buffers緩衝可避免反向代理服務器到客戶端的TCP流被割裂,從而導致緩慢的頁面加載。
例如,如果代理服務器收到一個響應,該響應是缺乏完整正文的。Nginx會不斷等待完整的報文頭。此時,如果發現響應超過緩存區的大小,會將響應拆分成兩個緩存區逐段發送,以保證整個網頁被客戶端正確地處理。
2. proxy_buffers緩衝影響
設置較小的proxy_buffers size可以導致Nginx請求會被分段發送至反向代理服務器。這會增加源服務器的負載和請求次數,並降低整個系統的吞吐量。
例如,如果size設置得較小,則會使Nginx頻繁地請求源服務器以獲得完整的響應。然而,如果size設置太大,則緩存區很可能被連續的小響應數據段佔滿並失去作用。
3. proxy_buffers chunked
在基於HTTP chunked傳輸編碼的響應中,源服務器會發送多個大小不同的數據塊,每個數據塊都包含一個數據和其大小標記。Nginx將支持chunked的響應分隔成小塊,存儲在proxy_buffers緩存區中。
例如,設計的網頁需要源服務器按順序返回各個部分,該網頁中的代碼可能被映射到不同的後端服務器。在這種情況下,反向代理服務器必須將數據緩衝區適當地更改為允許足夠的響應緩衝區。
4. proxy_buffer overflow
如果反向代理服務器的響應超過proxy_buffers緩存區的總大小,則會觸發proxy_buffer overflow錯誤。這可能會導致整個系統崩潰。
為了防止這種情況的發生,可以使用proxy_max_temp_file_size指令限制緩存空間,或使響應數據更換為壓縮編碼,從而減少緩存區佔用。
四、總結
proxy_buffers是Nginx反向代理服務器的重要指令。通過良好的代理緩存管理,可以顯著提高響應速度和系統吞吐量。在設置proxy_buffers前,建議先了解網絡需求,合理設置緩存區大小和數量,避免出現緩衝溢出,並保證系統的健壯性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/242642.html