配置参考
配置文件基于 INI 格式,通过不同章节定义全局设置、代理服务器、调度组、分流策略和 HTTP 处理。各章节的字段、取值、默认值与约束见对应文档。
章节
| 章节 | 内容 |
|---|---|
| General | 日志、DNS 解析机制、本地流量接管与全局设置 |
| Proxy | 代理传输协议、连接管理与网络出口配置 |
| Proxy Group | 服务器调度组与出口选择 |
| Proxy Resource | 外部代理服务器列表资源;节名也接受 Resource |
| Plugin | Profile 叠加、启用条件与优先级 |
| Rule | 匹配条件、目标动作与外部策略文件 |
| Host | 静态地址、域名别名和上游解析器 |
| Keystore | SSH 私钥与 P12 证书的命名材料 |
| MITM | HTTPS 解密范围与 CA |
| Response | 固定文本响应 |
| URL Rewrite | URL 改写、重定向与拒绝 |
| Header Rewrite | 请求头修改 |
| Script | HTTP、定时与网络事件脚本 |
配置格式
章节与配置行
章节使用 [section] 声明,名称按上表大小写书写。无章节名的键值行按 [General] 解析,未知章节被忽略。
键值配置使用 key = value,键和值两端的空白会被去除。代理服务器、调度组、插件和资源使用 name = arguments。分流规则使用逗号分隔的规则行,重写规则使用空白分隔的规则行,具体语法见对应章节。
配置按行解析,一条配置写在一行。空行可用于分隔内容,不支持将一个值换行续写。
值类型与引号规则
配置文件中的值以纯文本书写,支持以下四种基础数据类型:
- 字符串
- 写法示例:
interface = en0、"https://example.com/check?token=abc,123" - 说明:包含普通文本、文件路径、URL、IP 地址及网络网段。若字符串包含空格、逗号
,、等号=或井号#等特殊字符,必须使用成对双引号""包裹。
- 写法示例:
- 布尔值
- 写法示例:
ipv6 = true、ipv6 = yes、ipv6 = 1 - 说明:开关状态,支持
true/false、yes/no、1/0,大小写不敏感。
- 写法示例:
- 数值
- 写法示例:
test-timeout = 5、port = 1080 - 说明:十进制整数,用于端口号、时间秒数或阈值等,不附加任何单位后缀。
- 写法示例:
- 列表
- 写法示例:
dns-server = 223.5.5.5, 119.29.29.29 - 说明:以英文逗号
,分隔的多个元素。若列表项本身包含逗号或等号,该项必须使用双引号整体包裹(如includes="ResA,ResB")。
- 写法示例:
双引号规则说明:
- 包含特殊分隔符(逗号、等号、空格、井号)的字符串值或参数必须使用双引号包裹;
- 双引号字符串内部表示双引号字符本身时,使用
\"进行转义; - 无特殊分隔符的值直接书写,不使用引号。
注释
以 # 或 ; 开头的行是注释。值中首次出现的 # 或 ; 位于值开头或前面有空白时,其后的内容作为行尾注释;紧接值的符号保留为值的一部分。行尾注释识别不区分引号内部与外部。
ini
# 整行注释
[General]
log-level = info # 行尾注释
[Host]
example.com = server:https://dns.example.com/dns-query#route示例
ini
[General]
log-level = info
dns-server = system
[Proxy]
Node = socks, proxy.example.com, 1080
[Proxy Group]
Group = select, Node, DIRECT, includes=RemoteNodes
[Proxy Resource]
RemoteNodes = https://example.com/nodes.conf, update-interval=86400
[Plugin]
Extension = ./plugins/extension.conf
[Rule]
DOMAIN,example.com,DIRECT
FINAL,Group
[Host]
static.example.com = 192.0.2.1
[MITM]
hostname = *.example.com
ca-p12 = <BASE64_CERT_DATA>
ca-passphrase = <PASSWORD>
[Response]
^http://example\.com/status$ = ready
[URL Rewrite]
^http://example\.com/old$ http://example.com/new 302
[Header Rewrite]
http-request ^http://example\.com/ header-add X-Example 1
[Script]
Request = type=http-request, pattern=^http://example\.com/, script-path=./scripts/request.js