keepalive長連接
設定保持連接超時時長,0表示禁止長連接,默認為75s
示例:在響應頭顯示此首部字段
在nginx的默認配置中寫的是65
vim /etc/nginx/nginx.conf
keepalive_timeout 65;
可以按照實際需求設置長短
一、對外顯示keeplive值
1、查看默認訪問
[17:03:28 root@localhost ~]#curl -I www.a.net HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Mon, 31 May 2021 09:04:33 GMT Content-Type: text/html Content-Length: 22 Last-Modified: Mon, 31 May 2021 04:48:05 GMT Connection: keep-alive ETag: "60b46a85-16" Accept-Ranges: bytes
默認訪問只顯示開啟了keep-alive
2、修改配置文件
1 vim /etc/nginx/nginx.conf 2
3 keepalive_timeout 65 50;
這里的65是實際的keepalive時間,而50是對外顯示的長連接是50
3、測試訪問
[17:04:33 root@localhost ~]#curl -I www.a.net HTTP/1.1 200 OK Server: nginx/1.20.1 Date: Mon, 31 May 2021 09:09:17 GMT Content-Type: text/html Content-Length: 22 Last-Modified: Mon, 31 May 2021 04:48:05 GMT Connection: keep-alive Keep-Alive: timeout=50 ETag: "60b46a85-16" Accept-Ranges: bytes
持久連接斷開的條件有兩種,一種是時間到了,一種是請求的資源到最大數量了
二、請求資源限制數量
在一次長連接上所允許請求的資源的最大數量,默認為100
vim /etc/nginx/nginx.conf
keepalive_requests 10;
這里設置為最大請求資源為10
三,針對某種瀏覽器設置禁止長連接
keepalive_disable none | browser ...;
四、向客戶端發送響應報文的超時時長,此處是指兩次寫操作之間的間隔時長,而非整個響應過程的傳輸時長
send_timeout time;
五、指定請求報文中實體的最大值,設為0,則不限制,默認1m,超過報413錯誤
client_max_body_size size;
六、用於接收每個客戶端請求報文的body部分的緩沖區大小;默認為16k;超出此大小時,其將被暫存到磁盤上的由下面client_body_temp_path指令所定義的位置
client_body_temp_path path [level1 [level2 [level3]]];
七、設定存儲客戶端請求報文的body部分的臨時存儲路徑及子目錄結構和數量
目錄名為16進制的數字;用hash之后的值從后往前截取第1、2、3級作為文件
1 1級目錄占1位16進制,即2^4=16個目錄 0-f
2 2級目錄占2位16進制,即2^8=256個目錄 00-ff
2 3級目錄占2位16進制,即2^8=256個目錄 00-ff
client_body_temp_path /var/tmp/client_body 1 2 2
如:計算出來的是b0a15a1afc8f7e41fbdb46b091908288
將每個上傳的文件做哈希運算,使用最后一位做文件夾名,生成一個名字為8 的子目錄,將28作為6的子目錄,將08做為28的子目錄
將上傳的所有文件都分為了16*256*256=1048576個子目錄
上傳服務器配置生產案例:
location /upload { client_max_body_size 100m; client_body_buffer_size 2048k; client_body_temp_path /apps/nginx/temp 1 2 2; … }