zoukankan      html  css  js  c++  java
  • nginx对特定参数限流

    接到一个需求, 需要对请求(GET)里面的某个参数  的特定的值, 进行限流; 因为不限流的话, 不知道什么时候这个id的请求飙一下, 服务端就被压死了... 

    就像这样: /index.html?id=1234, 当 id == 1234的时候, 需要进行限流,  id != 1234不管

    服务端最前面用的 nginx

    这里, 大神搬出的方案应该是 nginx+lua ; 网上很多介绍, 首推  开涛的公众号


    但是, 但是 个人理解

    lua:

        优点: 可以应对更加复杂的需求, 例如智能地, 无论id是多少, 只要出现突发流量, 例如突增 5倍, 10倍, 自动 block掉; 更加智能方便, 一步到位; 

        缺点: 开发成本, 部署成本

    nginx自带模块

        优点: 部署成本低, 改改配置就好

        缺点: 很笨, 被打了一次才知道防...


    因为小弟比较菜, 马上做个 nginx+lua 是办不到了,  只能先用自带模块干咯


    具体做法

    用 map 模块来匹配参数, 形成一个key,  再用  limit_req 做限流

        http {  
            limit_req_zone $self_defined_id zone=testing:10m rate=2r/s;  
            limit_req_log_level info;  
            limit_req_status 503;  
          
        ## $arg_id表示get请求里面, id这个变量  
        map $arg_id $self_defined_id {  
            1234 1234;  
        } 
      server {
        server_name test.com default;
        listen  80;

     ## 这里被限流了就直接 503了
     limit_req zone=testing;
    ## 定义个 503的话就怎样做
    error_page 503 /wait.html

        location /limit.html {
            #  limit_req zone=testing;
        }

        location /un.html {
        }
    }

    }
      
  • 相关阅读:
    select/poll/epoll 对比
    I/O Mutiplexing poll 和 epoll
    Socket 编程IO Multiplexing
    ubuntu12.04 lts 安装gcc 4.8
    time since epoch
    ceph-RGW Jewel版新概念
    支持向量机(svm)
    MachineLearning之Logistic回归
    ML之回归
    ML之监督学习算法之分类算法一 ——— 决策树算法
  • 原文地址:https://www.cnblogs.com/MarchThree/p/6361254.html
Copyright © 2011-2022 走看看