路由控制
此页面由
docs/rules/routing.md自动同步生成。
路由与转发规则
Section titled “路由与转发规则”本章介绍控制请求目标地址和转发方式的规则。
将请求重定向到指定主机,是最常用的路由规则。
pattern host://target[:port]| 参数 | 说明 | 示例 |
|---|---|---|
target | 目标主机名或 IP | 127.0.0.1, api.backend.com |
port | 可选,目标端口 | 8080, 3000 |
# 域名重定向到本地www.example.com host://127.0.0.1
# 域名重定向到指定端口www.example.com host://127.0.0.1:8080
# 域名重定向到另一域名www.example.com host://api.backend.com
# 带端口的目标www.example.com host://api.backend.com:3000# 单级子域名通配(匹配 a.example.com, b.example.com)*.example.com host://backend.local
# 多级子域名通配(匹配 a.b.example.com, x.y.z.example.com)**.example.com host://backend.local# 匹配特定路径www.example.com/api host://api-server.local
# 路径通配www.example.com/api/* host://api-server.local| 测试场景 | 规则 | 请求 | 预期 |
|---|---|---|---|
| 基础重定向 | test.com host://127.0.0.1:MOCK_PORT | GET http://test.com/ | 请求到达 Mock 服务器 |
| 带端口重定向 | test.com host://127.0.0.1:8888 | GET http://test.com/ | 请求转发到 8888 端口 |
| 路径保留 | test.com host://127.0.0.1:MOCK_PORT | GET http://test.com/api/users | 路径 /api/users 保留 |
| 通配符匹配 | *.test.com host://127.0.0.1:MOCK_PORT | GET http://api.test.com/ | 匹配成功 |
与 host 类似,但即使请求被其他规则处理,xhost 仍然会执行。
pattern xhost://target[:port]www.example.com xhost://127.0.0.1:8080为命中的请求启用上游 HTTP/3 尝试。
pattern http3://pattern h3://- 默认保持现有的 HTTP/1.1 / HTTP/2 上游代理行为
- 只对指定域名显式启用上游 H3 探测与协商
- 验证目标服务是否支持 QUIC/HTTP/3
# 对指定站点启用上游 H3 尝试chatgpt.com http3://
# 使用别名api.example.com h3://- 该规则只控制代理到目标服务的上游连接
- 不会因此自动开启下游 UDP/QUIC 监听
- 仅对 HTTPS 上游请求生效
- 若目标不支持 H3,或 QUIC 建连失败,会自动回退到现有的 HTTP/1.1 / HTTP/2 转发链路
- 对普通绝对 URI 请求可直接生效;对浏览器常见的 HTTPS
CONNECT流量,通常需要 TLS interception 后,代理才能在解密后的转发阶段尝试 H3
| 测试场景 | 规则 | 预期 |
|---|---|---|
| 默认关闭 | 无 | 访问 H3-only HTTPS 目标时不会主动走 H3 |
| 显式启用 | test.com http3:// | 代理优先尝试上游 H3,失败后自动回退 |
| 别名启用 | test.com h3:// | 与 http3:// 行为一致 |
通过 HTTP 代理转发请求。
pattern proxy://proxy_host:proxy_port| 参数 | 说明 |
|---|---|
proxy_host | 代理服务器地址 |
proxy_port | 代理服务器端口 |
# 通过代理转发所有请求* proxy://proxy.company.com:8080
# 特定域名通过代理*.internal.com proxy://proxy.internal:3128
# 带认证的代理(通过 URL)example.com proxy://user:pass@proxy.com:8080| 测试场景 | 规则 | 预期 |
|---|---|---|
| HTTP 代理转发 | test.com proxy://127.0.0.1:PROXY_PORT | 请求通过代理服务器转发 |
| 代理认证 | test.com proxy://user:pass@127.0.0.1:PROXY_PORT | 代理收到认证信息 |
使用 PAC (Proxy Auto-Config) 脚本决定路由。
pattern pac://pac_script_urlpattern pac://{pac-script}⚠️ 注意:小括号内不能有空格,PAC 脚本必须使用块变量
# 远程 PAC 文件* pac://http://proxy.company.com/proxy.pac
# 内联 PAC 脚本(使用块变量)* pac://{proxy-pac}块变量定义:
``` proxy-pacfunction FindProxyForURL(url, host) { return "PROXY proxy.com:8080"; }```路由规则可以与其他规则组合使用:
# 路由 + 请求头修改www.example.com host://backend.local reqHeaders://(X-Forwarded-Host:www.example.com)
# 路由 + 过滤器www.example.com host://backend.local includeFilter://m:GET
# 路由 + 响应修改www.example.com host://backend.local resCors://*- 端口保留:使用
host时,原始请求的路径和查询参数会保留 - Host 头部:默认情况下,
Host头部会更新为目标主机 - HTTPS 处理:对于 HTTPS 请求,需要安装/信任 Bifrost CA 证书才能进行内容修改
- 优先级:当前文档仅覆盖仓库内已实现并稳定支持的路由协议;如需查看历史设计,请以代码支持集为准