zoukankan      html  css  js  c++  java
  • 限流保护——nginx限流模块

    1.限制请求次数——limit_req_zone模块

      a.意义:limit_req_zone 表示限制单位时间内的请求数,即速率限制,采用的漏桶算法

      a.在 conf/nginx.conf 配置文件中添加

    复制代码
    http {
    
        ......
    
        #限制请求次数参数
        limit_req_zone $binary_remote_addr zone=one:10m rate=5r/m;
    
        ......
    
        server {
    
            ......
    
            location /printProducer {
    
                ......
    
                #限制请求次数
                limit_req zone=one burst=10 nodelay;
                #自定义返回码
                limit_req_status 598;
    
                ......
    
            }
    复制代码

      b.参数说明:

        $binary_remote_addr:表示通过remote_addr这个标识来限制同一客户端ip请求数

        zone=one:10m:表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息

        rate=5r/m:表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如1r/s

        zone=one:表示使用哪个配置区域来做限制,与上面 limit_req_zone 里的name对应

        burst=5:表示设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内

        nodelay:如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队

        limit_req_status 598:设置拒绝请求的返回值。值只能设置 400 到 599 之间(默认是503)

    2.限制下载速度

      a.在 conf/nginx.conf 配置文件中添加

    复制代码
    http {
    
        ......
    
        server {
    
            ......
    
            location /download{
    
                ......
    
                #不限速阈值
                limit_rate_after 10m;
                #超过阈值限制速度
                limit_rate 10k;
    
                ......
    
            }
    复制代码

      b.参数说明:

        limit_rate_after 10m:表示前 10m 大小时不限速

        limit_rate 10k:表示超过 limit_rate_after 后以 10kb/s 限速

    3.参考文章:

      https://www.cnblogs.com/biglittleant/p/8979915.html

      https://my.oschina.net/gaga/blog/495444

  • 相关阅读:
    图标字体IcoMoon 使用
    JS 寻找孩子并打印路径
    为什么要用on()而不直接使用click
    setTimeout 虚假的“异步”
    解决Ajax.BeginForm还是刷新页面的问题
    .net生成Excel,并下载
    C#判断文件是否正在被使用
    sql为数字添加千分位(也就是钱的格式)
    HotelIInventory项目小结
    一步一步实现FormsAuthentic验证登录
  • 原文地址:https://www.cnblogs.com/ExMan/p/11795119.html
Copyright © 2011-2022 走看看