远程代理集
在配置文件直接声明的代理,无法在后台自动更新。我们更推荐使用远程代理集(proxy-provider),能在后台自动从 URL 更新策略组。
要使用远程代理集,需要在 proxy-providers 下定义,并在 proxy-groups 中引用。
proxy-providers:
provider-a:
url: https://raw.githubusercontent.com/STASH-NETWORKS-LIMITED/stash-example/main/config.yaml
interval: 3600
filter: 'example'
provider-b:
url: https://raw.githubusercontent.com/STASH-NETWORKS-LIMITED/stash-example/main/config.yaml
interval: 3600
proxy-groups:
- name: auto
type: url-test
interval: 300
use:
- provider-a # reference to provider-a
- provider-b # reference to provider-b如果远程代理集需要鉴权,或服务端要求特定的 Accept、User-Agent 等请求头,可以在 proxy provider 中配置 headers。该配置会在 Stash 更新远程代理集时随请求发送。
proxy-providers:
provider-a:
url: https://example.com/provider.yaml
interval: 3600
headers:
Authorization: Bearer your-token
Accept: application/yaml
User-Agent: Stashheaders 中的值可以是单个字符串,也可以是字符串数组,用于发送同名多值请求头:
proxy-providers:
provider-a:
url: https://example.com/provider.yaml
interval: 3600
headers:
Accept:
- application/yaml
- text/plain如果 URL 中已经包含用户名和密码,例如 https://user:password@example.com/provider.yaml,Stash 会优先使用 URL 中的信息生成 Basic Auth,此时它会覆盖 headers 中配置的 Authorization。
一个合法的远程代理集必须包含 proxies 字段:
proxies:
- name: 'ss1'
type: ss
server: server
port: 443
cipher: AEAD_CHACHA20_POLY1305
password: 'password'
- name: 'ss2'
type: ss
server: server
port: 443
cipher: AEAD_CHACHA20_POLY1305
password: 'password'远程代理集支持通过 filter 字段,使用正则表达式过滤代理名。远程代理集为空时候,会以 DIRECT 替代。
快捷引用远程代理集
Stash 也支持通过 use-url 在策略组中快捷引用远程代理集,此时不可指定更新时间和名称。
proxy-groups:
- name: auto
type: url-test
interval: 300
use-url:
- https://raw.githubusercontent.com/STASH-NETWORKS-LIMITED/stash-example/main/config.yaml