Skip to content

规则模式

此页面由 docs/rules/patterns.md 自动同步生成。

本章详细介绍 Bifrost 规则的 URL 匹配模式语法。


匹配模式用于指定哪些请求应该应用规则。Bifrost 支持多种匹配方式:

类型示例说明
域名匹配www.example.com精确匹配域名
路径匹配www.example.com/api匹配域名和路径
端口匹配www.example.com:8080匹配特定端口
通配符匹配*.example.com单级子域名通配
多级通配**.example.com多级子域名通配
正则匹配/\/api\/v\d+/正则表达式匹配

Terminal window
# 精确匹配 www.example.com
www.example.com host://127.0.0.1
# 不会匹配 api.example.com 或 example.com
Terminal window
# 匹配 example.com(不带子域名)
example.com host://127.0.0.1
测试场景规则模式请求 URL是否匹配
精确域名www.example.comhttp://www.example.com/
精确域名www.example.comhttp://api.example.com/
精确域名www.example.comhttp://www.example.com/path

Terminal window
# 匹配所有以 /api 开头的路径
www.example.com/api host://api-server.local
# 匹配 /api, /api/users, /api/orders 等
Terminal window
# 只匹配特定路径
www.example.com/api/users$ host://users-service.local
# $ 表示路径结尾
测试场景规则模式请求 URL是否匹配
路径前缀example.com/apihttp://example.com/api
路径前缀example.com/apihttp://example.com/api/users
路径前缀example.com/apihttp://example.com/v2/api
精确路径example.com/api$http://example.com/api
精确路径example.com/api$http://example.com/api/

Terminal window
# 只匹配 8080 端口
www.example.com:8080 host://127.0.0.1
# 不会匹配 80 或 443 端口
Terminal window
# HTTP 默认 80 端口
www.example.com host://127.0.0.1
# HTTPS 默认 443 端口
https://www.example.com host://127.0.0.1
测试场景规则模式请求 URL是否匹配
特定端口example.com:8080http://example.com:8080/
特定端口example.com:8080http://example.com/
默认端口example.comhttp://example.com:80/

匹配一个域名层级(不包含点号)。

Terminal window
# 匹配 api.example.com, www.example.com
# 不匹配 a.b.example.com
*.example.com host://backend.local

匹配多个域名层级(包含点号)。

Terminal window
# 匹配 a.example.com, a.b.example.com, x.y.z.example.com
**.example.com host://backend.local
Terminal window
# 匹配 /api/users, /api/orders 等
www.example.com/api/* host://api-server.local
# 匹配任意深度路径
www.example.com/api/** host://api-server.local
测试场景规则模式请求 URL是否匹配
单级通配*.example.comhttp://api.example.com/
单级通配*.example.comhttp://a.b.example.com/
多级通配**.example.comhttp://a.b.example.com/
多级通配**.example.comhttp://example.com/
路径通配example.com/api/*http://example.com/api/users
路径通配example.com/api/*http://example.com/api/v1/users
深度路径通配example.com/api/**http://example.com/api/v1/users

Terminal window
# 匹配 /api/v1, /api/v2, /api/v3 等
/\/api\/v\d+/ host://api-server.local
# 正则以 / 开始和结束
Terminal window
# i 标志表示忽略大小写
/\/API\/users/i host://users-service.local
# 匹配 /API/users, /api/users, /Api/Users 等
Terminal window
# 使用捕获组
/\/api\/(v\d+)\/users/ host://users-$1.service.local
# 将 /api/v2/users 的请求转发到 users-v2.service.local
模式说明示例匹配
\d+一个或多个数字123, 456
\w+字母数字下划线user_1, abc
[a-z]+小写字母abc, xyz
.*任意字符任何内容
[^/]+非斜杠字符路径段
测试场景规则模式请求 URL是否匹配
版本号匹配/\/api\/v\d+/http://example.com/api/v1
版本号匹配/\/api\/v\d+/http://example.com/api/latest
大小写不敏感/\/api/ihttp://example.com/API
大小写不敏感/\/api/ihttp://example.com/Api

Terminal window
# 只匹配 HTTP 请求
http://www.example.com host://127.0.0.1
# 只匹配 HTTPS 请求
https://www.example.com host://127.0.0.1
# 匹配所有协议(默认)
www.example.com host://127.0.0.1
Terminal window
# 匹配 WebSocket 请求
ws://www.example.com host://ws-server.local
# 匹配安全 WebSocket
wss://www.example.com host://wss-server.local
测试场景规则模式请求 URL是否匹配
HTTP 协议http://example.comhttp://example.com/
HTTP 协议http://example.comhttps://example.com/
默认匹配example.comhttp://example.com/
默认匹配example.comhttps://example.com/

Terminal window
# 匹配特定 IP
192.168.1.100 host://internal-server.local
# 匹配 IP 段
192.168.1.* host://lan-server.local
Terminal window
# 匹配 IPv6 地址
[::1] host://localhost-server.local
测试场景规则模式请求 URL是否匹配
IPv4 精确192.168.1.1http://192.168.1.1/
IPv4 通配192.168.1.*http://192.168.1.100/

Terminal window
# 匹配所有请求
* host://proxy-server.local
Terminal window
# 使用 ! 排除
!www.example.com host://127.0.0.1
# 排除特定路径
www.example.com !/static/* host://127.0.0.1

当多个规则都匹配时,按以下优先级顺序应用:

  1. 精确匹配 > 路径匹配 > 通配符匹配 > 正则匹配
  2. 更长的路径 > 更短的路径
  3. 更具体的规则 > 更通用的规则
  4. 后定义的规则 > 先定义的规则(同优先级时)
Terminal window
# 规则定义顺序
*.example.com host://general-backend.local # 优先级 3
www.example.com host://www-backend.local # 优先级 1
www.example.com/api host://api-backend.local # 优先级 2
# 请求 www.example.com/api/users 会匹配到 api-backend.local

测试场景规则模式请求 URL预期
精确域名test.comhttp://test.com/匹配
路径前缀test.com/apihttp://test.com/api/users匹配
单级通配*.test.comhttp://api.test.com/匹配
单级通配*.test.comhttp://a.b.test.com/不匹配
多级通配**.test.comhttp://a.b.test.com/匹配
端口匹配test.com:8080http://test.com:8080/匹配
正则匹配/\/api\/v\d+/http://test.com/api/v1匹配
大小写不敏感/\/api/ihttp://test.com/API匹配
HTTP 协议http://test.comhttps://test.com/不匹配
全局匹配*任何 URL匹配