apisix 2.13.1 limit 简单分析

种类及集群支持

apisix 2.13.1 limit 有3种limit

  • limit-conn :允许的最大并发请求数。超过 conn 的限制、但是低于 conn + burst 的请求,将被延迟处理。
  • limit-count :和 GitHub API 的限速 类似, 在指定的时间范围内,限制总的请求个数。并且在 HTTP 响应头中返回剩余可以请求的个数。
  • limit-req :指定的请求速率(以秒为单位),请求速率超过 rate 但没有超过 (rate + burst)的请求会被加上延时。

limit-count和limit-req是相似的。

这三种模式中,只有limit-count可以使用redis进行数据存储,即只有limit-count是支持cluster模式,当然其它2种自己也可以参考修改支持cluster。

注意limit-count支持redis单点及cluster两种模式,以下是对接redis cluster的示意:

curl -i http://127.0.0.1:9080/apisix/admin/routes/3 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/index.html",
    "plugins": {
        "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key": "remote_addr",
            "policy": "redis-cluster",
             "redis_cluster_nodes": [
                "192.168.157.151:7001",
                "192.168.157.151:7002",
                "192.168.157.151:7003"
            ],
            "redis_password": "123456",
            "redis_cluster_name": "redis-cluster-1"
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
            "192.168.157.151:9081": 1
        }
    }
}'

按consumer、IP进行limit

limit-req只能按以下之一进行限制:
用来做请求计数的依据,当前接受的 key 有:“remote_addr”(客户端IP地址), “server_addr”(服务端 IP 地址), 请求头中的"X-Forwarded-For" 或 “X-Real-IP”,“consumer_name”(consumer 的 username)。

其它两种支持将consumer和ip结合起来限制,但结合后每个consumer的限制都是一样的,如果要对不同consumer支持不同限制,需要

  • 使用不同route
  • 自定义修改
  • 开发ext plugin

按consumer需要先识别用户,即需要同时使用authentication plug,以下为 以下为用户+客户端ip模式示意:

curl -i http://127.0.0.1:9080/apisix/admin/routes/10 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/consumer",
    "plugins": {
       "basic-auth": {},
        "limit-count": {
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key_type": "var_combination",
            "key": "$consumer_name $remote_addr"
        }
    },
    "upstream": {
        "type": "roundrobin",
        "nodes": {
           "192.168.157.151:9081": 1
        }
    }
}'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_40455124

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值