路由转发
概述
ZeroBot提供了一个类似于Nginx反向代理的路由转发功能,但与传统的反向代理不同,它只能在同一服务器内部进行路由重写和转发,相当于内部路由重定向。这个功能特别适合需要将旧路径映射到新路径,或者需要简化复杂URL结构的场景。
配置方法
路由转发功能通过在global
配置的location
部分来实现。配置格式如下:
yaml
global:
location:
"正则表达式模式": "替换目标"
其中:
- 左侧:使用正则表达式定义要匹配的URL路径模式
- 右侧:匹配成功后要替换成的新路径
工作原理
当收到HTTP请求时,ZeroBot执行以下步骤:
- 检查是否配置了任何
location
规则 - 按配置顺序检查请求的URL路径是否匹配任何
pattern
- 如果找到匹配项,则将URL路径的匹配部分替换为相应的
target
- 在本地服务器内部使用修改后的URL路径转发请求
- 将处理结果返回给客户端
使用示例
示例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"
这个配置首先检查是否匹配第一条规则,如果不匹配则检查第二条规则。
性能考虑
虽然路由转发功能非常有用,但过多或过于复杂的转发规则可能会影响性能。建议仅在必要时使用,并保持规则简单明了。