模块:ngx_http_limit_req_module
测试未限制情况下的访问
yum install -y httpd-tools
ab -n 100 -c 10 http://a.com/
启动限制
定义
vim /etc/nginx/nginx.conf
http {
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s; 定义
#限制请求 二进制地址 限制策略的名 占用10M空间 允许每秒1次请求
引用
vim /etc/nginx/conf.d/a.conf
location / {
limit_req zone=req_zone;
#limit_req zone=req_zone burst=5;
#limit_req zone=req_zone burst=5 nodelay;
}
- 引用限制
- 引用限制,但是令牌桶有5个。有延迟。速度慢
- 引用限制,但是令牌桶有5个。无延迟。速度快
burst=5 表示最大延迟请求数量不大于5。 如果太过多的请求被限制延迟是不需要的 ,这时需要使用nodelay参数,服务器会立刻返回503状态码。
重启服务,并测试
日志文件
2022/06/06 23:27:29 [error] 95269#95269: *98 limiting requests, excess: 0.990 by zone "req_zone", client: 192.168.19.100, server: a.com, request: "GET / HTTP/1.0", host: "a.com"
2022/06/06 23:27:29 [error] 95268#95268: *100 limiting requests, excess: 0.990 by zone "req_zone", client: 192.168.19.100, server: a.com, request: "GET / HTTP/1.0", host: "a.com"
limiting requests 限制请求导致