Nginx 服务器之速率限制

Nginx服务器有一个非常有用的限速功能,但是它却常常被错误配置。
这个功能用来限制用户在某此时间段内请求的的HTTP请求数,此请求应该是 GET 或POST 来发出的请求。
这个限速功能常常被应用于网络安全方面。比如减慢暴力密码破解的攻击,爬虫对网页的抓取,防止DDOS攻击等。通过它来限制和过滤为为真实用户的标准数值,它会把来源URL等信息写到系统日志中。更确切地说,这个功能常用于提供极少量的应用服务器,用户访问量不多,但却常常瘫痪的问题。
在本文中,我们将详细介绍Nginx的速率限制基础及更高级的配置。值得一提的是,Nginx限速的工作原理与Nginx Plus相同。

Nginx限速是怎样工作的

Nginx限速使用 Leaky(唝水桶)算法,比喻为水桶顶部倒水,底部漏水,如果倒入水的速率超过漏水的速度,则水桶漏出。在电信网络和分组交换网络中,带宽有限的情况下该算法使用场景较多。
在这里插入图片描述
就请求处理而言,水代表客户端的请求,存水的桶按先进先出(FIFO)调度算法处理的队列。漏出的水表示退出缓冲区等服务器处理,而溢出表示请被丢弃且不再提供服务。
就请求处理而言,水代表客户端的请求,存水的桶按先进先出(FIFO)调度算法处理的队列。漏出的水表示退出缓冲区等服务器处理,而溢出表示请被丢弃且不再提供服务。

配置基本的速率限制

速率限制主要有2个主要指令,limit_req_zone和limit_req。如下代码:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/sm;

server {

location /login/ {

    limit_req zone=mylimit;

    proxy_pass http://my_upstream;

}

}

limit_req_zone指令定义了速度限制的参数,同时在出现的上下文中启用速率限制。(在本例中是针对于 /login/ URI的所有请求)

limit_requ_zone 指令通常定义在HTTP块中,这样可以用于多个上下文。它包含3个参数:

Key - 定义应用限制的请求特征。 在这个例子中,它是Nginx变量 b i n a r y r e m o t e a d d r , 它 保 存 着 客 户 端 I P 地 址 的 二 进 制 表 示 。 这 意 味 着 我 们 将 每 个 唯 一 的 I P 地 址 限 制 为 由 第 三 个 参 数 定 义

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值