首页 服务端 安全 正文

nginx限流配置,防CC攻击

long 2021-02-09 16:06 nginx 人气191

nginx可以限制单个ip一段时间的请求次数。比如同一ip,1秒限制10次请求。

设置limit_req_zonelimit_req参数,如下例,1秒限制10次请求。

http{
...
limit_req_zone $binary_remote_addr zone=allips:10m rate=10r/s;
...
server{
...
location {
...
limit_req zone=allips burst=5 nodelay;
...
}
...
}
...
}

rate=10r/s,代表一秒钟接收10次请求,超过的返回503错误。burst=5代表缓冲请求数为5,比如设置1秒10个请求,实际1秒钟进来20个请求,nginx会立即处理10个,缓存5个,剩下5个直接503错误。

如果设置了nodelay参数,会直接执行缓存的5个。也就是说1秒执行了15个,但是下一秒只能执行5个,下一秒如果超过5个的请求会503。

如果没有设置nodelay,会严格执行1秒10个,缓存的5个会在一秒执行,就是会延迟执行。

可以使用ab命令进行压力测试(例如:100个请求,10个并发)

ab -n 100 -c 10 https://pgres.cn/

公众号
小程序
网站统计
  • 文章总数:296
  • 总点击量:53687
  • 评论总数:27
  • 网站运行:543 天