Nginx(四) 限制请求速度,防DDOS攻击

官网说明

  • 设置共享内存区域和请求的最大突发大小。
  • 如果请求速率超过为区域配置的速率,则延迟其处理,以便以定义的速率处理请求。
  • 过多的请求将被延迟,直到它们的数量超过最大突发大小,在这种情况下请求以错误终止。
  • 默认情况下,最大突发大小等于零。

配置结构

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    ...
    server {
        ...
        location /search/ {
            limit_req zone=one burst=5;
        }
    }
}

$binary_remote_addr:变量名,用以区分不同的规则
zone=:记录区名为one
10m:共享内存区域大小,记录区
rate:每秒速率
/search/:指定的目录
burst:达到的突发数量,触发报错

上面的配置表示允许每秒平均不超过1个请求,突发不超过5个请求。
意思就是:
1秒只能发送一个请求,如果你在延迟内超出5个请求就会报错。这个不好说明,你一直刷新就知道了。
在这里插入图片描述
停一会后再刷新,会回复正常。

我测试的是安装完就有的那个index.html文件,所以我的配置是这样的
在这里插入图片描述

如果不想延迟,就是如果你用谷歌浏览器的话,标签的图标会一直转,那是被延迟了。
加了下面这个就不会转了,而是当超出突发就会报错。

limit_req zone=one burst=5 nodelay;

在上面的基础上加了个nodelay,用你单身二十几年的手速去试一下吧!

以我的手速,还是觉得延迟的方案比较有效。

猜你喜欢

转载自blog.csdn.net/weikaixxxxxx/article/details/85788173