nginx黑白名单限速

2020-05-01  本文已影响0人  mafa1993

速率限制黑白名单

  1. 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; # 必须为升序
}
  1. map,根据内置变量或者其他自定义变量以及自定义规则,创建一个自定义变量
    • 使用在http模块
# 匹配user_agent,如果包含Opera Mini就把mobile赋值为1,不包含就赋值为0
map $http_user_agent $mobile {
    default 0;  #默认mobile的值为0,如果包含opera Mini则为1
    "~Opera Mini" 1;
}
  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;
  1. set var value,value可以是文本、变量或者它们的组合
上一篇 下一篇

猜你喜欢

热点阅读