基础阶段回顾:
前言知识:
HTTP协议版本 | 连接关系 |
HTTP1.0 | TCP不能复用 |
HTTP1.1 | 顺序性TCP复用 |
HTTP2.0 | 多路复用TCP复用 |
HTTP请求建立在一次TCP连接基础上, 一次TCP请求至少产生一次HTTP请求
连接频率限制的配置语法: limit_conn_zone
开辟空间做存储连接状态:
systax: limit_conn_zone $[Key的名称, 例如nginx的ip对应的Key为remote_addr] zone=[开辟的空间的名称(自定义的)]:[所要开辟的空间的大小, 例如1m/2m10m...];
default: 无配置
context: http域
调用上面自定义的空间名称:
systax: limit_conn [要调用的自定义的空间的名称] [并发限制数, 表示同一时间有多少个];
default: 无配置
context: http域/server域/location域
进入default.conf文件进行配置:
借助ab压力测试工具进行压力测试:
ab -n 20 -c 20 http://192.168.19.134/html2.html
情景① 不开启任何配置:
情景② 开启配置:
限制并发连接数为1:
请求频率限制的配置语法: limit_req_zone
开辟空间做存储连接状态:
systax: limit_req_zone $[Key的名称, 例如nginx的ip对应的Key为remote_addr] zone=[开辟的空间的名称(自定义的)]:[所要开辟的空间的大小, 例如1m/2m10m...] rate=[以秒为单位的请求限制多少个];
default: 无配置
context: http域
调用上面自定义的空间名称:
systax: limit_req_zone=[要调用的自定义的空间的名称] [burst=number] [nodelay];
default: 无配置
context: http域/server域/location域
进入default.conf文件进行配置:
借助ab压力测试工具进行压力测试:
ab -n 20 -c 20 http://192.168.19.134/html2.html
情景① 不开启任何配置:
情景② 开启配置:
无参:
设置参数burst=3和nodelay:
附上配置文件中的内容:
limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html/test;
#limit_conn conn_zone 1;
limit_req zone=req_zone burst=3 nodelay;
#limit_req zone=req_zone burst=3;
#limit_req zone=req_zone;
index index.html index.htm;
}
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}