HTTP 出站如何建立连接
客户端先连接 server:port 指定的上游代理,再发送 HTTP CONNECT 请求建立到目标主机的 TCP 隧道。目标站点使用 HTTP 还是 HTTPS,不会改变这里的节点类型。
type: http 默认表示以明文连接上游代理。只有设置 tls: true,客户端到上游代理这一段才会使用 TLS。HTTP 出站本身不提供 UDP 转发。
最小必填字段
以下四项构成一个无需认证的最小 HTTP 出站。节点名称用于策略组和规则引用,不能与其他节点重名。
name必填- 节点名称,后续在
proxy-groups或规则中使用。 type必填- 固定填写
http。 server必填- 上游 HTTP 代理的域名或 IP 地址。
port必填- 上游代理监听端口,端口号本身不决定是否启用 TLS。
认证与 CONNECT 请求头
上游需要 Basic 代理认证时同时填写用户名和密码。headers 会加入 CONNECT 请求,可按网关要求覆盖默认的 Host、User-Agent 或 Proxy-Connection 等请求头。
username按需- 上游代理认证用户名。当前实现只有用户名和密码都非空时才发送 Basic 认证。
password按需- 与
username配套的代理认证密码。 headers按需- 键值形式的 CONNECT 请求头。不要把目标网站的普通请求头配置在这里。
HTTPS 上游与证书校验
开启 TLS 后,SNI、证书名称和证书链都针对上游代理,而不是最终访问的网站。正常情况下应保留证书校验。
tls按需- 设为
true后,以 TLS 连接上游 HTTP 代理。 sni按需- TLS 握手中的服务器名称,省略时使用
server。 name-cert-verify按需- 单独指定证书 DNSName 校验目标,不会修改 SNI。
skip-cert-verify谨慎- 跳过证书校验,仅适合明确了解风险的临时排错。
fingerprint按需- 完整证书的 SHA-256 指纹,不是浏览器客户端指纹。
certificate / private-key按需- 成对填写时启用 mTLS,支持 PEM 内容或对应文件路径。
HTTPS 认证节点示例
示例同时启用上游 TLS 和 Basic 认证。若上游无需认证,删除 username 与 password;若上游是明文 HTTP 代理,删除 tls 与 sni。
- 出现 TLS 握手错误时,先确认上游是否真的提供 HTTPS 代理服务。
- 出现 407 Proxy Authentication Required 时,核对账号、密码和上游允许的认证方式。
- 出现 CONNECT method not allowed 时,上游可能不是正向代理,或未允许 CONNECT 方法。
proxies:
- name: http-upstream
type: http
server: proxy.example.com
port: 443
username: user
password: pass
tls: true
sni: proxy.example.com