1) proxy_buffering這個參數用來控制是否打開後端響應內容的緩衝區,如果這個設置爲off,那麼proxy_buffers和proxy_busy_buffers_size這兩個指令將會失效。
但是無論proxy_buffering是否開啓,對proxy_buffer_size都是生效的。
2) proxy_buffering開啓的情況下,nignx會把後端返回的內容先放到緩衝區當中,然後再返回給客戶端(邊收邊傳,不是全部接收完再傳給客戶端)。
臨時文件由proxy_max_temp_file_size和proxy_temp_file_write_size這兩個指令決定的。
如果proxy_buffering關閉,那麼nginx會立即把從後端收到的響應內容傳送給客戶端,每次取的大小爲proxy_buffer_size的大小,這樣效率肯定會比較低。
3) 後端服務器的相應頭會放到proxy_buffer_size當中,這個大小默認等於proxy_buffers當中的設置單個緩衝區的大小。
而proxy_buffers當中單個緩衝區的大小是由系統的內存頁面大小決定的,Linux系統中一般爲4k。
查看方法:
# getconf PAGE_SIZE
4096
雖然默認是相等的,但是proxy_buffers的緩衝區大小一般會設置的比較大,以應付大網頁。而proxy_buffer_size只是響應頭的緩衝區,沒有必要也跟着
擴展到那麼大。所以proxy_buffer_size最好單獨設置,一般設置個4k就夠了。
4) proxy_buffers是有緩衝區數量和緩衝區大小組成的。總的大小爲number*size。
proxy_busy_buffers_size不是獨立的空間,他是proxy_buffers和proxy_buffer_size的一部分。nginx會在沒有完全讀完後端響應的時候就開始向客戶端傳送數據,
所以它會劃出一部分緩衝區來專門想客戶端傳送數據(這部分的大小是由proxy_busy_buffers_size來控制的,建議爲proxy_buffers中單個緩衝區大小的2倍),然後它繼續從後端取數據,緩衝區滿了之後就
寫到磁盤的臨時文件中。
5) 臨時文件由proxy_max_temp_file_size和proxy_temp_file_write_size這兩個指令決定。
proxy_max_temp_file_size是臨時文件的總大小,默認1024m。
proxy_temp_file_write_size是一次訪問能寫入的臨時文件的大小,默認是proxy_buffer_size和proxy_buffers中設置的緩衝區大小的2倍,Linux下一般是8k。
參考文檔:http://nginx.org/en/docs/http/ngx_http_proxy_module.html