zoukankan      html  css  js  c++  java
  • Nginx限流配置

    在上一篇文章Nginx负载均衡配置中,我们已经介绍了关于nginx的安装与nginx负载均衡配置相关的知识,今天主要讲讲nginx是如何限流的。

    随着业务的扩散,系统并发越来越高时,有三样利器用来保护系统,分别是缓存、降级和限流。

    缓存:缓存是现在系统中必不可少的模块,并且已经成为了高并发高性能架构的一个关键组件,缓存的目的是提升系统访问速度和增大系统处理容量。

    降级:这个在天猫双11的时候非常常见,降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。

    限流:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理

    vlimit_req_zone

    1.1 定义:用于限制单一的IP地址的请求的处理速率,即速率限制。

    1.2 使用方法

    在http中添加: limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。
    第二个参数:zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息。
    第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。

    在server中添加: limit_req zone=one burst=5 nodelay;

    第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。
    第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。
    第三个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队。

    1.3 测试效果

    我们先来个未配置nginx限流的ab压测结果:

    nginx限流配置

    注意:若ab test不太熟悉的朋友可以看看这篇文章:ab test压力测试

    在来看看配置nginx限流之后ab测试的压测结果:

    nginx限流配置

    vlimit_conn_zone

    2.1 定义:限制连接数,特别是来自单个IP地址的连接数。

    2.2 使用方法

    在http中添加: limit_conn_zone $binary_remote_addr zone=addr:10m;

    释义:$binary_remote_addr :表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。zone指定一个共享内存区域名称,大小为10m。当超过此限制时,服务器将返回错误

    在server中添加: limit_conn addr 1;

    释义:每个ip只允许1个连接,使用的是addr共享区域

    2.3 测试效果

    nginx限流配置

    v源码地址

    https://github.com/toutouge/javademosecond/tree/master/hellospringboot


    作  者:请叫我头头哥
    出  处:http://www.cnblogs.com/toutou/
    关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

  • 相关阅读:
    个人中心标签页导航(2017.12.13)
    评论列表显示及排序,个人中心显示(2017.12.12)
    20199329 2019-2020-2 《网络攻防实践》 综合实践
    20199329 2019-2020-2 《网络攻防实践》第十二周作业
    20199329 2019-2020-2 《网络攻防实践》第十一周作业
    20199329 2019-2020-2 《网络攻防实践》第十周作业
    20199329 2019-2020-2 《网络攻防实践》第九周作业
    20199329 2019-2020-2 《网络攻防实践》第八周作业
    20199329 2019-2020-2 《网络攻防实践》第七周作业
    20199329 2019-2020-2 《网络攻防实践》第六周作业
  • 原文地址:https://www.cnblogs.com/toutou/p/nginx_limit.html
Copyright © 2011-2022 走看看