請(qǐng)求緩沖區(qū)在NGINX請(qǐng)求處理中起著重要作用。 在接收到請(qǐng)求時(shí),NGINX將其寫(xiě)入這些緩沖區(qū)。 這些緩沖區(qū)中的數(shù)據(jù)可作為NGINX變量使用,例如$request_body。 如果緩沖區(qū)與請(qǐng)求大小相比較小,則數(shù)據(jù)將寫(xiě)入磁盤(pán)上的文件,因此將涉及I/O操作。 NGINX提供了可以改變請(qǐng)求緩沖區(qū)的各種指令。
client_body_buffer_size
<br\> 此指令設(shè)置用于請(qǐng)求主體的緩沖區(qū)大小。 如果主體超過(guò)緩沖區(qū)大小,則完整主體或其一部分將寫(xiě)入臨時(shí)文件。 如果NGINX配置為使用文件而不是內(nèi)存緩沖區(qū),則該指令會(huì)被忽略。 默認(rèn)情況下,該指令為32位系統(tǒng)設(shè)置一個(gè)8k緩沖區(qū),為64位系統(tǒng)設(shè)置一個(gè)16k緩沖區(qū)。 該指令在NGINX配置的http,server和location區(qū)塊使用。如下:
- server{
- client_body_buffer_size 8k;
- }
client_max_body_size
<br\> 此指令設(shè)置NGINX能處理的最大請(qǐng)求主體大小。 如果請(qǐng)求大于指定的大小,則NGINX發(fā)回HTTP 413(Request Entity too large)錯(cuò)誤。 如果服務(wù)器處理大文件上傳,則該指令非常重要。
默認(rèn)情況下,該指令值為1m。 如下:
- server{
- client_max_body_size 2m;
- }
client_body_in_file_only
<br\> 此指令禁用NGINX緩沖區(qū)并將請(qǐng)求體存儲(chǔ)在臨時(shí)文件中。 文件包含純文本數(shù)據(jù)。 該指令在NGINX配置的http,server和location區(qū)塊使用。 可選值有: off:該值將禁用文件寫(xiě)入 clean:請(qǐng)求body將被寫(xiě)入文件。 該文件將在處理請(qǐng)求后刪除。 on: 請(qǐng)求正文將被寫(xiě)入文件。 處理請(qǐng)求后,將不會(huì)刪除該文件。 默認(rèn)情況下,指令值為關(guān)閉。 如下:
- http{
- client_body_in_file_only clean;
- }
client_body_in_single_buffer
<br\> 該指令設(shè)置NGINX將完整的請(qǐng)求主體存儲(chǔ)在單個(gè)緩沖區(qū)中。 默認(rèn)情況下,指令值為off。 如果啟用,它將優(yōu)化讀取$request_body變量時(shí)涉及的I/O操作。如下例子:
- server{
- client_body_in_single_buffer on;
- }
client_body_temp_path
<br\> 此指令指定存儲(chǔ)請(qǐng)求正文的臨時(shí)文件的位置。 除了位置之外,指令還可以指定文件是否需要最多三個(gè)級(jí)別的文件夾層次結(jié)構(gòu)。 級(jí)別指定為用于生成文件夾的位數(shù)。 默認(rèn)情況下,NGINX在NGINX安裝路徑下的client_body_temp文件夾創(chuàng)建臨時(shí)文件。 如下例子:
- server{
- client_body_temp_pathtemp_files 1 2;
- }
該指令生成的文件路徑如temp_files/1/05/0000003051。
client_header_buffer_size
<br\> 此指令與client_body_buffer_size類(lèi)似。 它為請(qǐng)求頭分配一個(gè)緩沖區(qū)。 如果請(qǐng)求頭大小大于指定的緩沖區(qū),則使用large_client_header_buffers指令分配更大的緩沖區(qū)。如下例子:
- http{
- client_header_buffer_size 1m;
- }
large_client_header_buffers
<br\> 此指令規(guī)定了用于讀取大型客戶端請(qǐng)求頭的緩沖區(qū)的最大數(shù)量和大小。 這些緩沖區(qū)僅在缺省緩沖區(qū)不足時(shí)按需分配。 當(dāng)處理請(qǐng)求或連接轉(zhuǎn)換到保持活動(dòng)狀態(tài)時(shí),釋放緩沖區(qū)。如下例子:
- http{
- large_client_header_buffers 4 8k;
- }
|