apisix~路由前缀的正则匹配

打印 上一主题 下一主题

主题 811|帖子 811|积分 2433

参考:https://apisix.apache.org/zh/docs/apisix/FAQ/
在你提供的 Apache APISIX 路由配置中,vars 字段用于定义一些变量匹配规则。具体来说,vars 字段可以用来根据请求的特定变量(如 URI、请求方法等)进行条件匹配。
添加正则路由
  1. curl -i http://127.0.0.1:9180/apisix/admin/routes/1 -H "X-API-KEY: $admin_key" -X PUT -d '
  2. {
  3.     "uri": "/*",
  4.     "vars": [
  5.         ["uri", "~~", "^/[a-z]+$"]
  6.     ],
  7.     "upstream": {
  8.             "type": "roundrobin",
  9.             "nodes": {
  10.                 "127.0.0.1:1980": 1
  11.             }
  12.     }
  13. }'
复制代码
配置解析
  1. "vars": [
  2.     ["uri", "~~", "^/[a-z]+$"]
  3. ]
复制代码
各部分含义:


  • uri:

    • 这是要匹配的变量名称。在这个例子中,表现我们要检查请求的 URI。

  • ~~:

    • 这是一个匹配操作符,用于表现正则表达式匹配。在 APISIX 中,~~ 表现“利用正则表达式进行匹配”。

  • "^/[a-z]+$":

    • 这是一个正则表达式,表现 URI 必须以 / 开头,背面跟着一个或多个小写字母([a-z]),并且整个字符串必须以这些小写字母结束。
    • 具体来说:

      • ^:表现字符串的开始。
      • /:表现 URI 必须以斜杠开头。
      • [a-z]+:表现背面至少有一个小写字母。
      • $:表现字符串的结束。


示例匹配


  • 匹配的 URI

    • /abc
    • /xyz
    • /a

  • 不匹配的 URI

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

以/search末了的路由正则
  1. "uri": "/kc/*",
  2.   "vars": [
  3.     "uri",
  4.     "~~",
  5.     "^.*/userinfo$"
  6.   ]
复制代码
总结

通过这种方式,vars 字段允许你对请求的 URI 进行更细粒度的控制和过滤。只有当请求的 URI 符合指定的正则表达式时,路由才会被匹配到。这使得路由配置更加灵活,可以针对特定的请求进行处理。
实践


  • 如果两个路由a和b,其中a是正常的请求,b用来限制某个规则的uri需要添加limit-count这种限流,应该如何实现?
实现思绪


  • 路由a和路由b它们的前缀匹配是相同的
  • 路由b通过vars添加路由规则,找出要限制的uri
  • 路由a添加相同的vars,但需要添加!非运算符,这样a和b就分别处理不同的uri了,但前缀是相同的
路由配置
  1. # 路由a
  2. "uri": "/demo/*",
  3.   "vars": [
  4.     [
  5.       "uri",
  6.       "!",
  7.       "~*",
  8.       "^.*/search$"
  9.     ]
  10.   ],
  11. # 路由b
  12. "uri": "/demo/*",
  13.   "vars": [
  14.     [
  15.       "uri",
  16.       "~*",
  17.       "^.*/search$"
  18.     ]
  19.   ],
复制代码
apisix-dashboard中的体现


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表