Skip to content

路由转发

概述

ZeroBot提供了一个类似于Nginx反向代理的路由转发功能,但与传统的反向代理不同,它只能在同一服务器内部进行路由重写和转发,相当于内部路由重定向。这个功能特别适合需要将旧路径映射到新路径,或者需要简化复杂URL结构的场景。

配置方法

路由转发功能通过在global配置的location部分来实现。配置格式如下:

yaml
global:
  location:
    "正则表达式模式": "替换目标"

其中:

  • 左侧:使用正则表达式定义要匹配的URL路径模式
  • 右侧:匹配成功后要替换成的新路径

工作原理

当收到HTTP请求时,ZeroBot执行以下步骤:

  1. 检查是否配置了任何location规则
  2. 按配置顺序检查请求的URL路径是否匹配任何pattern
  3. 如果找到匹配项,则将URL路径的匹配部分替换为相应的target
  4. 在本地服务器内部使用修改后的URL路径转发请求
  5. 将处理结果返回给客户端

使用示例

示例1:简单路径重定向

yaml
global:
  location:
    "^/hdl/(.*)": "/flv/$1"

这个配置会将所有以/hdl/开头的请求重定向到/flv/,同时保留路径后面的部分。

例如:

  • /hdl/video123.html/flv/video123.html
  • /hdl/stream/live.mp4/flv/stream/live.mp4

示例2:多重路径规则

yaml
global:
  location:
    "^/api/v1/(.*)": "/api/v2/$1"
    "^/legacy/users/(.*)": "/users/$1"

这个配置首先检查是否匹配第一条规则,如果不匹配则检查第二条规则。

性能考虑

虽然路由转发功能非常有用,但过多或过于复杂的转发规则可能会影响性能。建议仅在必要时使用,并保持规则简单明了。

基于 AGPL 许可发布