nginx针对ip做限流配置
  J84zBtaJg2j3 2023年11月02日 38 0

要在Nginx负载均衡中实现针对同一个请求IP的频率限流配置,并且超过限制次数的请求直接丢弃,可以使用Nginx的HttpLimitReqModule模块结合变量和特定的配置来实现。以下是具体的配置步骤:

  1. 确保你的Nginx已经安装了HttpLimitReqModule模块。该模块用于控制请求速率。
  2. 打开Nginx的配置文件(通常是nginx.conf),找到你想要配置限流的位置(例如某个具体的location)。
  3. 在该位置添加以下代码:
limit_req_zone $binary_remote_addr zone=ratelimit:10m rate=100r/m;

上述代码创建了一个名为ratelimit的限流区域,并设置了每分钟允许的请求数为100。这里假设你的需求是每个IP一分钟最多请求十次,那么将100改为10即可。

  1. 在同一个位置添加以下代码:
map $http_x_real_ip $limit_ip {
    default         "";
    ~^(\d+\.\d+\.\d+\.\d+)$   $1;
}

limit_req zone=ratelimit burst=10 nodelay;

上述代码使用$http_x_real_ip变量将真实客户端IP保存在$limit_ip变量中,并且将该变量传递给limit_req指令进行限流操作。

  1. 在同一个位置下方添加以下代码:
if ($limit_ip) {
    limit_req zone=ip_limit:$limit_ip:10m burst=10 nodelay;
}

limit_req_status 429;

上述代码根据$limit_ip变量判断是否存在IP值,如果存在则对该IP进行额外的限流操作。这里我们设置了一个名为ip_limit的限流区域,每分钟最多只允许10次请求。

同时,使用limit_req_status 429;将超过限制次数的请求返回状态码429,即"Too Many Requests"。

  1. 保存并关闭配置文件。
  2. 重新加载Nginx配置,以使更改生效:执行命令 nginx -s reload
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
J84zBtaJg2j3