美文网首页
nginx限制指定IP或请求参数的访问频率

nginx限制指定IP或请求参数的访问频率

作者: 十毛tenmao | 来源:发表于2021-07-22 09:43 被阅读0次

当遇到一些IP或用户过量访问时,需要进行针对性的频率限制,比如针对IP或用户信息(比如token)

nginx配置指定IP的频率限制

本机和本地局域网不限制频率,其他IP都限制1r/s

# 1. 使用geo指令,从ip地址映射到0或1。 (不限制的ip映射到1)
geo $whiteList {
    default 0;
    127.0.0.1 1;
    192.168.1.0/24 1;
}
# 2. 在从0和1映射limit_key,1就映射到"",这样在limit_req_zone中使用就不会被限制
map $whiteList $limit_key {
    0 $binary_remote_addr;
    1 "";
}

# 3. 本地IP映射的$limit_key是"",就不会被限制,其他IP都会被限制
limit_req_zone $limit_key zone=allips:10m rate=1r/s;

server {
    listen       80;
    server_name  localhost;
    # 4. 使用频率限制规则allips
    limit_req zone=allips nodelay;
    //其他配置省略
}
  • geo指令: 可以从ip地址映射到对应的值
  • map指令: 值映射

针对自定义值的频率限制

  • 使用http_XXX读取header中的值,比如http_token会读取header中的token的值
limit_req_zone $http_token zone=token:10m rate=1r/s;

server {
    listen       80;
    server_name  localhost;
    limit_req zone=token nodelay;

参考

相关文章

网友评论

      本文标题:nginx限制指定IP或请求参数的访问频率

      本文链接:https://www.haomeiwen.com/subject/cjjemltx.html