前言
HTTP协议的连接与请求
0、完成HTTP请求前,需要完成TCP的三次握手
1、HTTP请求建立在一次TCP连接基础上
2、一次TCP连接至少产生一次HTTP请求
一、概念
1、连接配置
#开辟一个空间存储连接状态
#key:指定存储的key,如:用客户端的ip作为key,那么限制的就是ip
#name:指定空间名字
#size:指定空间大小
语 法:limit_conn_zone key zone=name:size
默认值:无
上下文:http
#使用连接限制
#zone:指定上面配置的zone的名字
#number:限制并发数
语法:limit_conn zone number;
默认值:无
上下文:http,server,location
2、请求配置
#key:指定存储请求的key
#name:指定空间名字
#size:指定空间大小
#rate:请求的限制,以秒为单位,限制每秒请求个数,如:1r/s 每秒一个请求
语法:limit_req_zone key zone=name:size rate=rate;
默认值:无
上下文:http
#zone:指定上面配置的zone的名字
#burst:客户端请求超过速率以后,指定number个遗留到下一秒执行
#nodelay:其他超过速率的请求将不延迟返回
语法:limit_req zone=name [burst=number] [nodelay]
默认值:无
上下文:http,server,location
二、配置实例
在/etc/nginx/conf.d 修改的default.conf配置,内容如下:
[root@sam ~]# vim /etc/nginx/conf.d/default.conf
#定义限制连接的存储空间,以ip地址作为key进行限制,空间大小为1m
limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
#定义请求访问的存储空间,以ip地址作为key进行限制,空间大小为1m,限制速率为每秒一次请求
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /opt/site/sam;
#limit_conn conn_zone 1; #配置连接限制
#limit_req zone=req_zone burst=3 nodelay; #配置请求限制,指定遗留3个请求到下一秒执行,其他请求无延时返回
#limit_req zone=req_zone burst=3;
limit_req zone=req_zone;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
重新加载 nginx 配置
nginx -s reload -c /etc/nginx/nginx.conf
或
systemctl reload nginx
使用ab测试工具进行压测
ab -n 20 -c 20 [http://localhost/index.html](http://localhost/index.html)