Fork me on GitHub

nginx---keepalive_timeout timeout,和上传限制

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

 

posted @ 2021-05-31 18:29  Alex-Lzy  阅读(2900)  评论(0编辑  收藏  举报