博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx对特定参数限流
阅读量:5836 次
发布时间:2019-06-18

本文共 1017 字,大约阅读时间需要 3 分钟。

接到一个需求, 需要对请求(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 {
    } } }   

转载于:https://www.cnblogs.com/MarchThree/p/6361254.html

你可能感兴趣的文章
Core Animation系列之CADisplayLink
查看>>
命名:前置条件方法命名规则。
查看>>
利用Hierarchy Viewer优化布局
查看>>
[leetcode]Construct Binary Tree from Inorder and Postorder Traversal @ Python
查看>>
vc 获取 硬盘序列号 和 cpu
查看>>
【读书笔记《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)...
查看>>
HDUOJ-------2719The Seven Percent Solution
查看>>
hbase源码系列(十三)缓存机制MemStore与Block Cache
查看>>
转折点:移动互联网时代的商业法则
查看>>
【VI】如何删除匹配指定字符串的行(已解决)
查看>>
IIS7.5中调试.Net 4.0网站出现无厘头500错误的解决办法 (转)
查看>>
Linux fdisk 命令
查看>>
微软职位内部推荐-SENIOR PRODUCER
查看>>
确定比赛名次
查看>>
上门洗车App 竟然是块大肥肉!
查看>>
设计师必备!免费下载 PSD 素材的32个网站
查看>>
三星笔记本R428安装xp win7双系统,切换系统重启才能进入系统解决办法。
查看>>
第 5 章 工厂方法模式【Factory Method Pattern】
查看>>
Android浏览图片,点击放大至全屏效果
查看>>
ArrayAdapter使用方法
查看>>