Shadowrocket 配置文件结构详解:General、Rule、Host、URL Rewrite 各段写什么

逐段拆开一份 .conf 配置文件,讲清 [General] 全局参数、[Rule] 规则行、[Host] 本地映射与 [URL Rewrite] 重写的作用和书写格式,每段附真实片段。

本文速览

本文适合已在 iPad 或 iPhone 上使用 Shadowrocket(小火箭)、准备编辑配置文件的用户。按段落区分全局参数、分流规则、域名映射与请求重写,再通过最小示例检查规则顺序与生效条件。所有连接测试均以用户已有自己的服务商与订阅为前提;示例地址仅说明语法,不是可用服务。

先区分 .conf、订阅与当前连接

.conf 是配置文本,方括号标题标识段落,标题下的内容属于该段。[General] 主要使用键值对,[Rule] 使用逗号分隔的规则行;不能把同一种写法套用到全部段落。以 # 开头的独立行可作为注释,建议把说明单独写一行,避免注释混入参数值。

Home 主要用于连接、选择服务器与查看 Global Routing;Config 用于管理和选择配置文件;Settings 用于应用设置。已有订阅通常用于维护服务器列表,不能把服务器条目已更新理解成当前规则文件也已替换。配置文件也可能引用远程资源,检查时需要进一步确认其更新来源。

备份原配置 逐段检查 保存并选择 核对路由 发起新请求

在 Config 编辑前,先保留原文件副本,记录 Home 当前选中的服务器与 Global Routing 状态。文件能够保存,不等于已经选中使用;选中配置,也不等于所有流量一定按其中的分流规则处理。排查时应把“文件内容”“当前配置”“路由姿态”分开核对。

4 段
本文检查 General、Rule、Host、URL Rewrite
4 类
规则示例使用 DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINAL
2 次
每次修改分别进行目标请求测试与回退验证

判断方法:先确认配置已选中,再判断语法是否有误

如果编辑前后请求结果完全相同,先核对 Config 中选中的文件与 Home → Global Routing,不要立即叠加更多规则。每轮只修改一个段落,才能把结果对应到具体改动。

[General]:全局参数使用键值对

[General] 设置影响配置整体行为的参数。以下片段以系统 DNS、关闭 IPv6 及系统流量绕行为例,展示 键 = 值 格式。这是语法示范,不是所有网络都适合直接采用的参数组合。

[General]
# 使用系统提供的 DNS
dns-server = system

# 是否启用 IPv6
ipv6 = false

# 允许系统相关流量绕过
bypass-system = true

同一个键不要重复写入多个相互冲突的值。合并两份配置时,先对照已有键,再决定保留哪一个,而不是整段追加。DNS 相关故障也要区分“服务器域名无法解析”和“目标网站域名无法解析”:二者影响的是不同的连接环节。

[Rule]:逐行匹配,具体条件放前面

[Rule] 决定请求匹配哪个目标策略。常见结构为 规则类型,匹配值,策略;FINAL 没有匹配值,直接写目标策略。规则按顺序检查,前面已经命中的请求不会继续依靠后面的宽泛条件重新分配。

[Rule]
# 匹配 example.com 及其子域名
DOMAIN-SUFFIX,example.com,PROXY

# 文档示例网段,不是实际服务地址
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve

# 按目标 IP 的地区数据库结果匹配
GEOIP,CN,DIRECT

# 未命中前面规则时使用
FINAL,PROXY

PROXY 表示代理策略,仍需要可用的代理出口;DIRECT 表示直接连接。若使用自建策略组,规则末尾必须引用实际存在的名称,拼写、空格与大小写均应核对。把不存在的组名写入规则,并不能自动创建对应出口。

关键字匹配对象检查重点
DOMAIN-SUFFIX域名及其子域名不写协议、路径或端口,例如只写 example.com。
IP-CIDRIPv4 地址段/24 是网络前缀长度;no-resolve 避免仅为该规则触发域名解析。
GEOIP目标 IP 的地区归属不是按设备所在地区,也不是按网站页面语言匹配。
FINAL其余未匹配请求放在末尾;放在前面会使后续规则失去匹配机会。

要验证此段,在 Home → Global Routing 选择 Config,并确认 Config 中使用的是刚编辑的文件。Proxy 是全局代理姿态,Direct 是全局直连姿态;Scene 按已配置的场景处理,不能简单视为 Config 的另一个名称。希望验证逐条规则时,应先排除全局姿态或场景切换的干扰。

[Host]:修改域名映射,不等于修改出口

[Host] 用于指定域名对应的地址。下面将一个完整主机名映射到文档保留地址,结构为 主机名 = IP 地址。这里的地址没有部署网站,复制后请求失败属于预期结果,不能拿它判断实际服务器是否可用。

[Host]
# 仅作格式说明
portal.example.com = 192.0.2.10
api.example.com = 198.51.100.20

Host 映射既不是 HTTP 重定向,也不是 DOMAIN-SUFFIX 规则。浏览器地址栏仍可保留原域名,HTTPS 证书也仍须与请求域名匹配。若把域名指向没有该域名证书的服务器,即使网络连接成功,也可能出现证书错误;不要通过忽略证书错误来掩盖映射问题。

域名映射检查

段落
[Host]
主机名
portal.example.com
目标地址
192.0.2.10
写入格式
portal.example.com = 192.0.2.10

指定地址不代表目标服务器已配置对应网站。

分流目标检查

段落
[Rule]
规则类型
DOMAIN-SUFFIX
匹配值
example.com
目标策略
DIRECT 或已存在的代理策略

选择出口与指定解析地址是两项独立设置。

验证时,使用完整主机名发起一次新请求;已有连接可能继续复用旧连接,不能只看网页是否仍然打开。若移除映射后恢复正常,先核对目标地址、服务监听与证书,而不是继续添加更宽泛的直连规则。远端代理是否再次解析域名也与连接方式有关,不要把本地映射理解为强制控制所有远端解析。

[URL Rewrite]:匹配 URL 后执行重写动作

[URL Rewrite] 处理 URL 匹配与动作,不使用 [Rule] 的逗号格式。下面示例把一个 HTTP 地址临时重定向到 HTTPS,动作中的 302 是重定向状态码,不是服务器端口。

[URL Rewrite]
^http://example\.com/(.*)$ url 302 https://example.com/$1
  1. ^ 表示从 URL 开头匹配,防止匹配范围意外落到地址中间。
  2. example\.com 中的反斜杠使点号表示普通字符,而不是正则表达式里的任意字符。
  3. (.*) 捕获域名之后的内容,目标中的 $1 引用这部分内容。
  4. url 302 指定 URL 重定向动作;改写后产生的新请求仍需要正常解析、分流与建立连接。

重写不负责补齐服务器能力。目标站点必须实际支持 HTTPS,证书也必须有效。如果目标地址再次跳回原地址,可能形成重定向循环。测试应先使用一条精确域名规则,不要一开始就对所有 HTTP 地址应用宽泛正则。

保存后的验证顺序与常见问题

四段可以同时存在于一个文件,但不应理解成机械执行的四步流水线。General 影响全局行为,Rule 负责策略匹配,Host 影响域名映射,URL Rewrite 处理可见的请求 URL。故障定位应围绕实际现象拆分,而不是认为“最后一段覆盖前面所有设置”。

  1. 在 Config 保存副本并选择该文件,确认没有误选另一个同名配置。
  2. 回到 Home,确认服务器可用,再把 Global Routing 设为 Config 以验证规则分流。
  3. 发起一个新的目标请求,记录目标域名、预期策略、实际连接结果与错误提示;必要时查看相关请求记录。
  4. 撤销刚才的单项修改后再测试一次。只有修改与回退能够稳定改变结果,才继续合并下一项配置。

我改了 Rule,为什么还是全部直连?

先在 Home → Global Routing 检查是否停在 Direct,再到 Config 核对选中的文件。确认使用 Config 后,检查目标域名前是否已有更早的 DIRECT 规则,以及 FINAL 是否误放在前面。

订阅更新了,规则为什么没变?

先确认更新的是 Home 中的服务器订阅,还是 Config 中的远程配置。服务器列表更新不代表本地 .conf 被替换;若使用远程配置,还应备份本地修改,防止后续配置更新覆盖它们。

加了 Host 后出现证书错误,改 DIRECT 有用吗?

先撤销新增映射并重新请求。若错误消失,应检查映射服务器是否为原域名提供有效证书。DIRECT 只改变出口策略,不能替服务器修正证书域名。

URL Rewrite 没命中,是不是配置没保存?

先核对当前配置,再确认测试地址确实以 http:// 开头、域名与正则一致。浏览器若直接使用 HTTPS,应换用能明确发起原始 HTTP 请求的测试方式;不要为了命中示例扩大到所有域名。

配置修改后连接反复自动开启,应该检查哪里?

到 Settings → On Demand 核对自动连接条件,再检查系统中的 VPN 状态。先排除自动连接触发,再手动重连测试;不要把连接自动恢复当成某条 Rule 导致的结果。

配置文件应只保留能够说明用途、能够验证结果的设置。合并远程规则前,检查其匹配范围、目标策略以及更新是否会覆盖本地内容。需要继续核对语法时,可查看规则参考;首次连接步骤见使用教程。

App Store 正版核验与配置准备

Shadowrocket 是 Apple 平台上的闭源商业应用,通过 App Store 一次性买断获取,开发者为 Shadow Launch Technology Limited。iPhone、iPad 等设备的系统要求与兼容性以 App Store 页面标注为准。客户端买断 ≠ 线路套餐;导入与连接需要使用自己已有的订阅或配置。

去正版核验页 看教程
App Store 正版核验