Peer: 如何连接到上游服务器

upstream_peer() 阶段,用户应返回一个 Peer 对象,该对象定义如何连接到特定的上游服务器。


Peer

HttpPeer 描述了要连接的上游服务器。

属性 含义
address: SocketAddr 要连接的 IP 和端口(格式为 IP:Port
scheme: Scheme 使用的协议(HttpHttps
sni: String 要使用的 SNI(仅适用于 HTTPS)
proxy: Option<Proxy> 将请求通过 CONNECT 代理 的设置
client_cert_key: Option<Arc<CertKey>> 在 mTLS 连接中使用的客户端证书
options: PeerOptions 定义连接到上游的附加选项(见下文)

PeerOptions

PeerOptions 定义了连接到上游的具体行为和设置。

属性 含义
bind_to: Option<InetSocketAddr> 作为客户端 IP 绑定到的本地地址
connection_timeout: Option<Duration> 建立 TCP 连接前的超时时间
total_connection_timeout: Option<Duration> 包括 TLS 握手在内的整体连接超时时间
read_timeout: Option<Duration> 从上游读取数据时每次 read() 的超时时间(在每次读取后重置)
idle_timeout: Option<Duration> 等待连接复用的空闲连接关闭前的超时时间
write_timeout: Option<Duration> 写入上游数据时 write() 的超时时间
verify_cert: bool 是否验证上游服务器证书是否有效并通过验证
verify_hostname: bool 是否验证上游服务器证书中的 CN 是否与 SNI 匹配
alternative_cn: Option<String> 接受与此名称匹配的 CN 的证书
alpn: ALPN 在 ALPN 中通告的 HTTP 协议(如 HTTP/1.1 或 HTTP/2)
ca: Option<Arc<Box<[X509]>>> 用于验证服务器证书的根证书(CA)集合
tcp_keepalive: Option<TcpKeepalive> 上游服务器的 TCP keepalive 设置

示例

目前示例尚未完成,后续会添加具体的代码演示。