目录

Nginx限制客户端请求速率

目录

摘要

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
http {
    limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;

............

        server {
            listen 80;
            server_name  localhost;
            location / {
                root html;
                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;
                }
            }
    }

参数详解

limit_req_zone 的参数

1
2
3
zone:req_zone:10m 表示一个内存区域大小为10m,并且设定了名称为req_zone.
rate=1r/s 表示请求的速率是1秒1个请求,rate=5r/s 表示请求的速率是1秒5个请求,当单位设置成60r/m时,并不能达到限速1分钟60次的效果,它等同于1r/s。
$binary_remote_addr 表示远程的ip地址,当此nginx前方还存在代理时,需进行处理

limit_req 的参数

zone=req_zone  表示这个参数对应的全局设置就是req_zone的那个内存区域
burst=3 表示请求队列的长度。
nodelay 表示不延时,比如 rate=5r/s,burst=10 那么来了15个请求,能一次搞定,否则,就是此秒只能搞定5个请求。一般都是不延期的设置。