要为会定期检查出站的策略组指定测试目标,应当使用手册中的 url 字段,其含义是健康检查测试地址。与目标同时生效的还有 interval、timeout、expected-status、lazy 和 max-failed-times。手册特别写明:url 只会检查代理组的 proxies 字段的代理,不会检查通过 use 引入的代理集合中的代理。因此设置测试目标之前,必须先分清节点写在哪一类字段里。下文只按该页通用字段给出适用条件、填写步骤和失败后的判断顺序,不补充本页未出现的测速算法或界面名称。
适用条件
当你已在 proxy-groups 中填写 name 与 type,并准备对 proxies 里的出站做健康检查时,才适合配置测试目标。name 含特殊符号应当用引号包裹。use 可以引入代理集合,但这些成员不会被该组 url 检查,不能把集合里有节点当成测试目标已覆盖它们的依据。lazy 默认为 true,未选择到当前策略组时不进行测试;组未被选中时,写了地址也不会按你的预期去测。interval 如不为 0 则启用定时测试,单位为秒;为 0 就没有定时健康检查。timeout 单位为毫秒。expected-status 是健康检查时期望的 HTTP 响应状态码,若配置了该字段,则只有响应状态码与期望一致才认为节点可用;默认为星号,表示对响应状态不做要求。max-failed-times 是最大失败次数,超过则触发一次强制健康检查,默认 5。filter、exclude-filter、exclude-type 会改变谁留在组内,测试只对仍属于 proxies 且未被排除的出站有意义。
判断测试目标是否真正生效,要同时看到:地址已写、定时间隔非零、组已被选中或已改变默认懒惰跳过、待测名称位于 proxies、期望状态码写法与探测约定一致。缺任何一项,都不能说自动检查已经按该目标工作。
设置步骤
第一步,在该策略组填写 url,值为健康检查测试地址。手册示例采用 generate_204 这类探测路径,判断依据是该地址应能返回可核对的 HTTP 响应,而不是完整网页。第二步,按探测约定填写 expected-status。写法可使用斜线匹配多个状态码,使用短横线匹配状态范围,可混合书写:200/302 匹配这两个码,400-503 匹配一段范围,200/302/400-503 为混合。若探测约定为 204,期望里就必须能覆盖 204,否则配置了该字段后会被判不可用。第三步,设置 timeout,单位毫秒,超时即这次检查失败。第四步,设置 interval,单位秒,非 0 才定时测试。第五步,需要时改 max-failed-times,理解未达到次数前不会强制再测。第六步,确认待测出站写在 proxies;仅在 use 中的名称不会进入该 url 检查。第七步,评估 lazy:默认未选中不测,若场景要求组在未选中时仍检查,必须改变这一默认懒惰行为,否则谈不上按间隔自动检查。第八步,复查筛选规则,避免测试目标指向一张已经不含目标节点的名单。disable-udp、hidden、icon 以及已弃用的 interface-name、routing-mark 都不参与测试目标。default-selected 只决定默认选谁,不决定测谁。
失败时下一步
没有出现检查结果或结果明显对不上时,按字段判断。先看 url 是否缺失、interval 是否为 0、当前组是否因 lazy 未被选中而跳过。再看节点是否只存在于 use 引入的集合,若是,下一步把要比对的出站写入 proxies,而不是改探测地址。接着核对 expected-status 的斜线与范围是否写错,以及默认星号与显式状态码两种语义不要混用。timeout 过短会在响应到达前失败。max-failed-times 未用尽时可能尚未强制检查。empty-fallback 只在组为空时回退 proxy,不能当测试目标。若筛选后 proxies 已空,应先修复引入与排除,再谈地址。以上均符合仍无结果,则停止添加本页没有的测试项,回到 name 是否被实际选中、成员名单是否变化这两点。