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;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值