个人随笔
nginx配置限制同一个ip的访问频率
2020-04-08 23:12:21

Nginx通过limit_conn_zone和limit_req_zone对同一个IP地址进行限速限流,可防止DDOS/CC和flood攻击。

修改nginx.conf配置文件

  1. http {
  2. ......
  3. # 在http节点中添加下面这一行
  4. limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
  5. server {
  6. # 在server节点中添加这一行
  7. limit_req zone=one burst=10 nodelay;
  8. ......
  9. }
  10. }

limit_req_zone的参数详解

  • $binary_remote_addr:表示客户端ip地址的二进制,当此nginx前方还存在代理时,需进行处理
  • zone=one:10m:为session会话状态分配一个大小为10m内存存储区,并且设定名称为one.
  • rate=1r/s:表示请求频率不能超过每秒一次。

limit_req的参数详解(也可以添加在某一个请求中)

  • zone=one:表示这个server服务收到的请求放在one的那个内存区域,等待被处理
  • burst=10:表示请求队列的长度,比如我设置了rate=1r/s,而同一时刻有15个请求发过来,那么第一个请求会被处理,10个请求会被存在队列里等待被处理,而剩下4个请求就会直接响应503状态码。
  • nodelay:表示不延时。比如rate=1r/s,如果不设置nodelay就会严格按照1秒处理一个请求的频率,直观的看就是页面数据卡了,过了一秒后才加载出来。

原文链接:https://blog.csdn.net/czx2018/java/article/details/102655512

 4
有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2