nginx黑白名单限速
2020-05-01 本文已影响0人
mafa1993
速率限制黑白名单
- ngx_http_geo_module 根据客户端IP地址对变量赋值,类似于switch的用法
- geo指令,在http区块中定义,可以单独配置成一个文件,进行include
- ranges 指示地址将定义为地址段的形式
geo $geo { # $geo为变量名,可以自定义
default 0; # 默认返回0,delete删除指定网络
127.0.0.1/24 2; # 如果是127段的ip,返回2
192.168.1.0/24 1; # 192的ip返回1
# ranges:
# defaule 1;
# 192.168.1.1-192.168.1.10 0; # 必须为升序
}
- map,根据内置变量或者其他自定义变量以及自定义规则,创建一个自定义变量
- 使用在http模块
# 匹配user_agent,如果包含Opera Mini就把mobile赋值为1,不包含就赋值为0
map $http_user_agent $mobile {
default 0; #默认mobile的值为0,如果包含opera Mini则为1
"~Opera Mini" 1;
}
- 案例
# 例如使用0标示白,白名单中不限速 , 192段的没有速率限制,其余的有速率限制
geo $whiteIpList {
default 1;
192.168.1.0/24 0;
}
# 如果在白名单中返回空,不在白名单返回其二进制的地址,因为限速模块用的二进制地址
map $whiteIpList $limit {
1 $binary_remote_addr; # 给limit赋上二进制地址,这里相当于格式转化,将ip转换成二进制的,因为nginx速率限制模块使用的是二进制的ip地址
0 "",
}
# 如果是空字符串,速率不会生效
limit_req_zone $limit zone=test:10m rate=1r/s;
- set var value,value可以是文本、变量或者它们的组合