又学了个新模块,看起来挺重要的,配置也稍微复杂一些,赶紧来记一下
连接频率限制-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,看不到什么效果,所以要多打开一个终端进行测试
连接限制我感觉应该不常用,而且我从虚拟机测试并没有成功,以后再搞吧