Nginx模块之请求限制

又学了个新模块,看起来挺重要的,配置也稍微复杂一些,赶紧来记一下

  连接频率限制-limit_conn_module

    基本语法

      1.limit_conn_zone key zone=name:size;

         要想创建连接限制必须要分配一个空间,这个空间就是第一个选项

         要声明限制的对象,比如IP $binary_remote_addr 对于Nginx的变量详解请看我的另一篇文章

         要指定分配空间的名称,为了真正实现限制时指定名称

         要指定分配空间的大小

      2.limit_conn zone number

          该语法需要结合上面,添加调用的zone的名称,限制个数

  请求频率限制-limit_req_module

      基本语法

        1.limit_req_zone key zone=name:size rate=rate

          和连接类似,需要指定空间,限制的key,空间的名称,大小

          有一个不同的是rate指定限制的单位,个数

            例如 rate=1r/s 指一秒只发送一个请求

        2.limit_req zone=name[burst=number] [nodelay]

          结合上面与连接类似

  放置区域

        1.http

        2.http,server,location

 区别:都可以实现连接限制,但表现方式不同

HTTP请求建立在一次TCP连接基础上

一次TCP请求至少可以产生一次HTTP请求

测试连接限制与请求限制

  首先我们在default.conf中配置连接限制与请求限制,并将要指定的参数依次测试

     

  测试首先需要准备ab工具,对我的网站进行20次的请求,并发数为20次,我的另一篇文章有讲解

    

  在没有进行限制的情况下是没有问题的,这时我们开始对请求进行限制,每秒只允许接受一次请求

    配置完毕后不要忘记重新加载配置文件 nginx -s reload

  再次使用ab工具后会发现,出现了一个这个

    

    这说明我们的20次请求中有19次并没有通过,也就起到了请求限制的作用

  接下来我们测试连接限制

    连接限制是只允许制定个数的IP进行访问,这次我们学聪明了,由于一开始要先进行测试再打开error.log,看不到什么效果,所以要多打开一个终端进行测试

    连接限制我感觉应该不常用,而且我从虚拟机测试并没有成功,以后再搞吧

    

posted @ 2018-01-04 17:06  爱编程的男孩  阅读(208)  评论(0编辑  收藏  举报