美文网首页
nginx 限流功能

nginx 限流功能

作者: 京樂春水 | 来源:发表于2020-02-16 18:44 被阅读0次

最近老大布置任务,需要对网站进行限流,要求每个IP每秒只能访问1次。百度后,发现nginx的limit_req 命令基本可以满足我们的需求。

配置如下:

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    ·······
    location / {
         limit_req zone=mylimit burst=5 nodelay;
         limit_req _log_level error;
         limit_req_status 503;
         ·······
    }
}

以上配置中使用的是nginx的ngx_http_limit_req_module模块,用来限制单个IP的请求数。

语法:limit_req_zone session_variable zone=name:size rate=rate #放在http区域内 实例:limit_req_zonebinary_remote_addr zone=mylimit:10m rate=1r/s;
说明:
1. $binary_remote_addr,表明是以remote_addr为限制目标,加上binary是为了压缩内存占用空间
2. zone=name:size,分配一个以name为名的并且大小为size的内存空间,用来存储访 问的频次信息
3. rate=rate, 如rate=1r/s表示同一个IP每秒只允许一个请求通过

语法:limit_req zone=name [burst=number] [nodelay | delay=number]; #放在location区域内
实例:limit_req zone=mylimit burst=5 nodelay;
说明:
1. zone=mylimit,对应http区域中配置的zone
2. burst=5,表示设置一个大小为5的缓冲区,超过频次限制的请求先放入这个缓冲区
3. nodelay,设置后超过频次限制以及缓冲区满了的情况下返回503状态码;如不设置,那么额外的请求将进入等待排队的状态

语法:limit_req_log_level info | notice | warn | error #可放入http, server, location区域
实例:limit_req_log_level error
说明:当超出限速及被缓存后,写入日志(对应相应的日志级别)

语法:limit_req_status code #可放入http, server, location区域
实例:limit_req_status 503
说明:自定义拒绝请求后返回的状态码

参考:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
https://www.cnblogs.com/biglittleant/p/8979915.html

相关文章

  • nginx 限流功能

    最近老大布置任务,需要对网站进行限流,要求每个IP每秒只能访问1次。百度后,发现nginx的limit_req 命...

  • Nginx与OpenResty接入层限流

    本文来自于对nginx和openresty文档和网上文章的学习记录,非纯粹原创 一、nginx本身支持的限流功能 ...

  • 秒杀系统设计思路

    一、限流与降级 客户端限流 按钮置灰 js控制每秒只能发送一个请求 站点层限流 1. Nginx限流 Nginx官...

  • 服务限流

    保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流可是Nginx接入层面的限流,也可以是服务层面的限流。 ...

  • 限流算法

    前言 保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流包括Nginx层面的限流以及业务代码逻辑上的限流。...

  • Laravel 中的面试题(五)

    35、 什么是Laravel API限流? 这是Laravel的功能。它提供了限流处理功能。限流可帮助Larave...

  • Nginx限流

    有好几个业务要访问ES集群。有些业务比较紧急,那么它们的请求应该优先处理,而有些业务对响应时间的要求不是那么在意,...

  • Nginx限流

    Nginx限流模块包含 连接数限流模块 ngx_http_limit_conn_module 漏桶算法实现的请求限...

  • nginx限流

    一、limit_conn_zone 其中limit_conn one 10既可以放在server层对整个serve...

  • nginx限流

    请求:for i in `seq 1 10`; do curl http://127.0.0.1:8089/inf...

网友评论

      本文标题:nginx 限流功能

      本文链接:https://www.haomeiwen.com/subject/nejrfhtx.html