日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx反向代理缓冲区优化

發布時間:2025/6/17 Nginx 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx反向代理缓冲区优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容目錄

  • proxy_buffering
  • proxy_buffer_size
  • proxy_buffers
  • proxy_busy_buffers_size
  • proxy_max_temp_file_size和proxy_temp_file_write_size

關于緩沖, 主要是合理設置緩沖區大小, 盡量避免緩沖到硬盤時的情況

如果一臺代理服務器上面配置了多個域名,可以在每個域名的location區域設置,在這里配置的參數會覆蓋nginx.conf的全局配置參數,從而對不同域名的業務需要進行針對性的設置

proxy_buffering

proxy_buffering這個參數用來控制是否打開后端響應內容的緩沖區,如果這個設置為off,那么proxy_buffers和proxy_busy_buffers_size這兩個指令將會失效。 但是無論proxy_buffering是否開啟,對proxy_buffer_size都是生效的。

proxy_buffering開啟的情況下,nignx會把后端返回的內容先放到緩沖區當中,然后再返回給客戶端(邊收邊傳,不是全部接收完再傳給客戶端)。 臨時文件由proxy_max_temp_file_size和proxy_temp_file_write_size這兩個指令決定的。

如果proxy_buffering關閉,(比如大圖片用戶打開一半然后就不顯示了)那么nginx會立即把從后端收到的響應內容傳送給客戶端,每次取的大小為proxy_buffer_size的大小,這樣效率肯定會比較低。

注: proxy_buffering啟用時,要提防使用的代理緩沖區太大。這可能會吃掉你的內存,限制代理能夠支持的最大并發連接數。

proxy_buffer_size

后端服務器的相應頭會放到proxy_buffer_size當中,這個大小默認等于proxy_buffers當中的設置單個緩沖區的大小。 proxy_buffer_size只是響應頭的緩沖區,沒有必要也跟著設置太大。 proxy_buffer_size最好單獨設置,一般設置個4k就夠了。

proxy_buffers

proxy_buffers的緩沖區大小一般會設置的比較大,以應付大網頁。 proxy_buffers當中單個緩沖區的大小是由系統的內存頁面大小決定的,Linux系統中一般為4k。 proxy_buffers由緩沖區數量和緩沖區大小組成的??偟拇笮閚umber*size。

若某些請求的響應過大,則超過_buffers的部分將被緩沖到硬盤(緩沖目錄由_temp_path指令指定), 當然這將會使讀取響應的速度減慢, 影響用戶體驗. 可以使用proxy_max_temp_file_size指令關閉磁盤緩沖.

proxy_busy_buffers_size

proxy_busy_buffers_size不是獨立的空間,他是proxy_buffers和proxy_buffer_size的一部分。nginx會在沒有完全讀完后端響應的時候就開始向客戶端傳送數據,所以它會劃出一部分緩沖區來專門向客戶端傳送數據(這部分的大小是由proxy_busy_buffers_size來控制的,建議為proxy_buffers中單個緩沖區大小的2倍),然后它繼續從后端取數據,緩沖區滿了之后就寫到磁盤的臨時文件中。

proxy_max_temp_file_size和proxy_temp_file_write_size

臨時文件由proxy_max_temp_file_size和proxy_temp_file_write_size這兩個指令決定。 proxy_temp_file_write_size是一次訪問能寫入的臨時文件的大小,默認是proxy_buffer_size和proxy_buffers中設置的緩沖區大小的2倍,Linux下一般是8k。

proxy_max_temp_file_size指定當響應內容大于proxy_buffers指定的緩沖區時, 寫入硬盤的臨時文件的大小. 如果超過了這個值, Nginx將與Proxy服務器同步的傳遞內容, 而不再緩沖到硬盤. 設置為0時, 則直接關閉硬盤緩沖.

配置示例

  • 通用網站的配置
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小 proxy_buffers 4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的設置 proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大于這個值,將從upstream服務器傳
  • docker registry的配置 這個每次傳輸至少都是9M以上的內容,緩沖區配置大;
proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 1M; proxy_busy_buffers_size 2M; proxy_max_temp_file_size 0

總結

buffer工作原理
首先第一個概念是所有的這些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數量的。

?

nginx官方模塊說明: http://nginx.org/en/docs/http/ngx_http_proxy_module.html

淘寶的中文參考版: http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_proxy_module.html#proxy_buffering

其他參考: http://netexr.blog.51cto.com/2480285/1252245 http://blog.jiangming7.cn/toolssystem/server/nginx/692.html

轉載于:https://www.cnblogs.com/xiewenming/p/8023090.html

總結

以上是生活随笔為你收集整理的Nginx反向代理缓冲区优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。