nginx 之limit_conn_module和limit_req_module

(1)nginx的请求限制可以通过以下来进行配置:
在这里插入图片描述

这俩个模块都可以实现nginx的请求限制,但是它们的实现原理是不一样的。区别就是在连接与请求上。

(2)那么对于Http协议的连接与请求:
在这里插入图片描述

Http的连接请求是建立在TCP连接的基础之上的。首先需要有Tcp的三次握手,然后才能有Http的连接请求。然后用客户端和服务器端不断的发送FIn和Ack来保持连接,也就是keepAlive.连接是建立在Http请求的基础之上的。在现在这个时代,其实一次连接可以处理多个的http请求。

(3)各个Http版本的区别:

在这里插入图片描述

在Http1.0中,TCP是不可以复用的,也就是在客户端在发送了HTTP请求以后,服务器端在返回响应的一定时间内是会断开的。一次连接就对应着一次的请求。在Http1.1版本中,一次连接可以顺序性的对应着对应Http请求。在Http2.0版本中,一次连接可以并行的对应着多次的Http请求。

那么总结来说就是这样:

Http请求建立在一次TCP连接的基础上。一次的TCPa连接至少产生一次的Http请求。也可以产生多次的Http请求。

(4)对于连接限制-limit_conn_zone:
在这里插入图片描述
这个模块的目的主要是对连接进行限制,如果是这样的话,那么我们就需要对连接的状态进行进行存储。那么是用什么来进行存储呢?存储肯定是需要空间的。这个limit_conn_zone就是开辟了这样的一个空间。这个空间里,我们需要对那个作为key要进行说明,比如说,以客户端ip作为Key。那么这样的话,就以http_addr这个变量作为Key。如果要以别的内置变量作为key来作为key来进行配置的时候,那么同样,可以写到key配置的这一项中。那么后面的zone=name:size,就是限制的空间,name指的是空间的名字,size表示的是空间的大小。在真正实现限制的时候就会调用这个空间。在limit_conn zone number中就可以调用这个空间。在limit_conn zone number中,是要结合先定义好的zone 才能使用limit_conn.这个zone指的是我们需要调用的zone的name.number指的是并发的限制个数。

(5)对于请求限制-limit_req_zone:

在这里插入图片描述
Rate:表示限制请求的速率是多大,一般来说,是以秒为单位的。

(6)具体的配置:

在这里插入图片描述
在这里有一个limit_req zone=req_zone;这个req_zone对应的就是开头定义好的zone.Zone=req_zone:1m rate=1r/s;这个表示的是对于同一个客户端过来的,我限制它是1秒1个。$remote_addr和binary_remote_addr,其实处理的都是一个意思。在这里,这个zone的大小设置为了1m的大小。对于1m的空间,存储binary肯定比直接存储remote_addr要小。所以,使用了binary.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值