nginx-限制单个 IP 地址的请求处理率

概述

模块名:ngx_http_limit_req_module

ngx_http_limit_req_module模块用于限制每个定义的键的请求处理率,特别是来自单个 IP 地址的请求的处理率。限制是使用“漏桶”方法完成的。

漏桶算法

漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃。
在网络中,漏桶算法可以控制端口的流量输出速率,平滑网络上的突发流量,实现流量整形,从而为网络提供一个稳定的流量。

示例

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

    ...

    server {

        ...

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

指令

语法默认值Context注解
limit_req zone=name [burst=number] [nodelay | delay=number]httpserver,location设置共享内存区域和请求的最大突发大小。如果请求速率超过为区域配置的速率,则它们的处理将被延迟,以便以定义的速率处理请求。过多的请求会被延迟,直到它们的数量超过最大突发大小,在这种情况下,请求会因错误而终止 。默认情况下,最大突发大小为零。
limit_req_dry_run on | offlimit_req_dry_run offhttpserver,location该指令出现在 1.17.1 版中。
启用试运行模式。在这种模式下,请求处理速率不受限制,但是在共享内存区域中,过度请求的数量照常计算。
limit_req_log_level info | notice | warn | errorlimit_req_log_level 错误httpserver,location该指令出现在 0.8.18 版本中。
当服务器由于速率超过或延迟请求处理而拒绝处理请求时,设置所需的日志记录级别。延迟的记录级别比拒绝低一分;例如,如果limit_req_log_level notice指定了“ ”,则延迟与info级别一起记录。
limit_req_status codelimit_req_status 503httpserver,location该指令出现在 1.3.15 版中。
设置状态代码以响应被拒绝的请求。
limit_req_zone key zone=name:size rate=rate [sync]http为共享内存区域设置参数,该区域将保持各种键的状态。特别是,状态存储了当前的过度请求数。该key可以包含文本,变量,他们的组合。不考虑具有空键值的请求。

参考文档

Module ngx_http_limit_req_modulehttp://nginx.org/en/docs/http/ngx_http_limit_req_module.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值