当前位置:首页 > 其他 > 正文内容

apisix~路由前缀的正则匹配

邻居的猫1个月前 (12-09)其他1297

参阅:https://apisix.apache.org/zh/docs/apisix/FAQ/

在你供给的 Apache APISIX 路由装备中,vars 字段用于界说一些变量匹配规矩。具体来说,vars 字段能够用来依据恳求的特定变量(如 URI、恳求办法等)进行条件匹配。

增加正则路由

curl -i http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
{
    "uri": "/*",
    "vars": [
        ["uri", "~~", "^/[a-z]+$"]
    ],
    "upstream": {
            "type": "roundrobin",
            "nodes": {
                "127.0.0.1:1980": 1
            }
    }
}'

装备解析

"vars": [
    ["uri", "~~", "^/[a-z]+$"]
]

各部分意义:

  1. uri:

    • 这是要匹配的变量称号。在这个比如中,表明咱们要查看恳求的 URI。
  2. ~~:

    • 这是一个匹配操作符,用于表明正则表达式匹配。在 APISIX 中,~~ 表明“运用正则表达式进行匹配”。
  3. "^/[a-z]+$":

    • 这是一个正则表达式,表明 URI 有必要以 / 最初,后边跟着一个或多个小写字母([a-z]),而且整个字符串有必要以这些小写字母完毕。
    • 具体来说:
      • ^:表明字符串的开端。
      • /:表明 URI 有必要以斜杠最初。
      • [a-z]+:表明后边至少有一个小写字母。
      • $:表明字符串的完毕。

示例匹配

  • 匹配的 URI

    • /abc
    • /xyz
    • /a
  • 不匹配的 URI

    • /ABC(包括大写字母)
    • /123(包括数字)
    • /abc/def(包括多个途径段)

以/search结束的路由正则

 "uri": "/kc/*",
  "vars": [
    "uri",
    "~~",
    "^.*/userinfo$"
  ]

总结

经过这种方法,vars 字段答应你对恳求的 URI 进行更细粒度的操控和过滤。只有当恳求的 URI 契合指定的正则表达式时,路由才会被匹配到。这使得路由装备愈加灵敏,能够针对特定的恳求进行处理。

实践

  • 假如两个路由a和b,其间a是正常的恳求,b用来约束某个规矩的uri需求增加limit-count这种限流,应该怎么完成?

完成思路

  1. 路由a和路由b它们的前缀匹配是相同的
  2. 路由b经过vars增加路由规矩,找出要约束的uri
  3. 路由a增加相同的vars,但需求增加!非运算符,这样a和b就别离处理不同的uri了,但前缀是相同的

路由装备

 # 路由a
 "uri": "/demo/*",
  "vars": [
    [
      "uri",
      "!",
      "~*",
      "^.*/search$"
    ]
  ],
# 路由b
 "uri": "/demo/*",
  "vars": [
    [
      "uri",
      "~*",
      "^.*/search$"
    ]
  ],

apisix-dashboard中的表现

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=743

分享给朋友:

“apisix~路由前缀的正则匹配” 的相关文章

k8s~service和deployment中的spec.selector

k8s~service和deployment中的spec.selector

service和deployment中的spec.selector 在 Kubernetes 中,Service 和 Deployment 的 spec.selector 在运用上是有一些不同之处的,下面是对这两者的详细解说: 1. Deployment 中的 Selector 在 Deployme...

AI Logo制造东西网站——LogoAI.ai

AI Logo制造东西网站——LogoAI.ai

AI Logo制造东西,可通过输入文本生成Logo。可自定义色彩、字体、布局等,生成的Logo能够无水印下载。 功用介绍: 免费每日运用配额:每天可免费运用AI生成Logo。 高档自定义选项:支撑对Logo的色彩、字体、布局和图标进行自定义规划,以习惯不同需求。 无水印下载:生成的Logo无水印,能...

全球最大分类广告商的Karpenter实践:减负运维、削减中止、每月省21万(上)

全球最大分类广告商的Karpenter实践:减负运维、削减中止、每月省21万(上)

原文链接: https://medium.com/adevinta-tech-blog/the-karpenter-effect-redefining-our-kubernetes-operations-80c7ba90a599 编译:CloudPilot AI Adevinta 是国际最...

云计算学习要多久,云计算学习需要多长时间?

云计算学习要多久,云计算学习需要多长时间?

1. 基础知识学习: 如果你是计算机科学或相关领域的初学者,可能需要几个月的时间来学习云计算的基本概念、术语和架构。 如果你有编程或系统管理的背景,可能只需要几周的时间来掌握基础知识。2. 专业课程或认证: 完成一门专业的云计算课程或获得认证(如AWS Certified Solu...

区块链是什么时候出现的,区块链的起源与发展历程

区块链技术最早出现在2008年,由一位或多位化名为中本聪(Satoshi Nakamoto)的人或团队在发布的比特币白皮书中首次提出。2009年,比特币作为第一个基于区块链技术的应用正式上线运行。区块链是一种分布式数据库技术,它允许数字信息在多个节点之间安全地存储和共享,同时确保数据的一致性和不可篡...

阿里巴巴区块链,创新与变革的力量

阿里巴巴区块链,创新与变革的力量

3. 跨境支付: 应用:港版支付宝Alipay HK的用户可以用手机向菲律宾钱包Gcash实现基于区块链技术的转账,跨境汇款如今也能像本地转账一样实时到账。4. 数字身份和信用: 应用:蚂蚁金服和华信永道推出“联合缴存证明及失信惩戒云平台”,实现住房公积金缴存证明及黑名单的跨中心、跨地域...