新闻中心

记录团队成长点滴以及对技术、理念的探索,同时我们乐于分享!

Nginx如何限流配置?

2020-07-12 11:07:17 分类:技术学堂

1.配置参数

limit_req_zone指令设置参数

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

limit_req_zone定义在http块中,$binary_remote_addr表示保存客户端IP地址的二进制形式。

Zone定义IP状态及URL访问频率的共享内存区域。zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息约1MB,所以示例中区域可以存储160000个IP地址。

Rate定义最大请求速率。示例中速率不能超过每秒10个请求。

2.设置限流

location / {

        limit_req zone=mylimit burst=20 nodelay;

        proxy_pass http://real_server;

}

burst排队大小,nodelay不限制单个请求间的时间。

3.不限流白名单

geo $limit {

default              1;

192.168.2.0/24  0;

}

 

map $limit $limit_key {

1 $binary_remote_addr;

0 "";

}

 

limit_req_zone $limit_key zone=mylimit:10m rate=1r/s;

 

location / {

        limit_req zone=mylimit burst=1 nodelay;

        proxy_pass http://real_server;

}

上述配置中,192.168.2.0/24网段的IP访问是不限流的,其他限流。

IP后面的数字含义:

24表示子网掩码:255.255.255.0

16表示子网掩码:255.255.0.0

8表示子网掩码:255.0.0.0