host
修改请求的 DNS 解析结果,将指定请求解析到特定 IP 地址(域名)及端口,可以看作终极版的系统 hosts 配置功能。
规则语法
txt
pattern host://ipOrDomain[:port] [filters...]
port
如果不填,则沿用请求 URL 的原始端口,如果是指向域名则相当于cname
功能
参数 | 描述 | 详细文档 |
---|---|---|
pattern | 匹配请求 URL 的表达式 | 匹配模式文档 |
value | IP + 可选端口 或域名 + 可选端口 ⚠️ 不支持从文件/远程 URL 加载数据 | 操作指令文档 |
filters | 可选过滤器,支持匹配: • 请求URL/方法/头部/内容 • 响应状态码/头部 | 过滤器文档 |
配置示例
txt
# 如果只是 IP 或端口可以省略 `host://`
www.example.com/test0 127.0.0.1 # 不改端口,沿用请求 URL 的原始端口
www.example.com/test1 127.0.0.1:5173
# CNAME 功能
www.example.com/test2 host://www.test.com
www.example.com/test3 host://www.test.com:8080
# 高级配置,从请求参数获取目标地址,includeFilter 确保存在该参数
www.example.com/test4 host://`${query.target}$:8080` includeFilter:///[?&]target=[\w-]+/i
与 proxy 的匹配优先级
以下是优化后的文档,结构更清晰,语言更简洁准确:
与 host 的匹配优先级
默认行为
当请求同时匹配 host
和 proxy
规则时:
- 仅
host
规则生效 proxy
规则自动忽略
修改优先级
配置方式 | 语法 | 效果 |
---|---|---|
优先 proxy | enable://proxyFirst 或 lineProps://proxyFirst | 仅 proxy 生效(覆盖 host) |
同时生效 | enable://proxyHost 或 lineProps://proxyHost | proxy 和 host 同时生效 |
使用建议
- 大多数场景使用默认行为即可
- 需要特殊代理逻辑时才使用
proxyFirst
- 需要双重匹配时使用
proxyHost
常见问题
- 与 URL 转换的区别:txt
# 服务端收到的 URL 还是 www.example.com www.example.com 127.0.0.1:5173 # 服务端收到的 URL 是 http://127.0.0.1:5173 www.example.com http://127.0.0.1:5173
- 自动降级为 HTTP 请求:如果配置的目标 IP 为
127.0.0.1
,且 HTTPS 请求报错会自动降级为 HTTP 请求,方便访问本地服务,用户可以通过以下规则禁用该功能:txt# 禁用本地 HTTPS 自动降级 pattern disable://auto2http