Peer
: 如何连接到上游服务器
在 upstream_peer()
阶段,用户应返回一个 Peer
对象,该对象定义如何连接到特定的上游服务器。
Peer
HttpPeer
描述了要连接的上游服务器。
属性 | 含义 |
---|---|
address: SocketAddr |
要连接的 IP 和端口(格式为 IP:Port ) |
scheme: Scheme |
使用的协议(Http 或 Https ) |
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 设置 |
示例
目前示例尚未完成,后续会添加具体的代码演示。