Nginx限制相同IP访问频率

在nginx配置中使用limit_req_zone指令设置请求速率限制:

http {
    ...
    limit_req_zone $binary_remote_addr zone=my_limit1:10m rate=10r/s;
    ...
}

limit_req_zone: 限制请求速率指令。

$binary_remote_addr: 请求的二进制远程地址,通常是客户端的IP地址。

zone=my_limit1:10m: 定义名为my_limit1的限制区域,存储关于请求速率的信息。10m表示内存大小为10mb。

rate=10r/s: 每秒10个请求。

应用配置到服务中:

server {
    ...
    location / {
        limit_req zone=my_limit burst=10 nodelay;
        ...
    }
}
  • limit_req zone=my_limit burst=10 nodelay;: 在这个location中,使用了limit_req指令,对请求速率进行了限制。

    • zone=my_limit: 引用配置my_limit速率限制区域。

    • burst=10: 表示允许请求的瞬时爆发,最多允许同时处理10个请求。

    • nodelay: 不延迟请求,即不等待,直接应用速率限制。