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; … }