ServersTransport
ServersTransport 支持配置 Traefik 与 TCP 服务器之间的传输。
配置示例¶
声明 serversTransport:
tcp:
serversTransports:
mytransport:
dialTimeout: "30s"
dialKeepAlive: "20s"
terminationDelay: "200ms"
tls:
serverName: "example.com"
certificates:
- "/path/to/cert1.pem"
- "/path/to/cert2.pem"
insecureSkipVerify: true
rootCAs:
- "/path/to/rootca.pem"
peerCertURI: "spiffe://example.org/peer"
spiffe:
ids:
- "spiffe://example.org/id1"
- "spiffe://example.org/id2"
trustDomain: "example.org"[tcp.serversTransports.mytransport]
dialTimeout = "30s"
dialKeepAlive = "20s"
terminationDelay = "200ms"
[tcp.serversTransports.mytransport.tls]
serverName = "example.com"
certificates = ["/path/to/cert1.pem", "/path/to/cert2.pem"]
insecureSkipVerify = true
rootCAs = ["/path/to/rootca.pem"]
peerCertURI = "spiffe://example.org/peer"
[tcp.serversTransports.mytransport.tls.spiffe]
ids = ["spiffe://example.org/id1", "spiffe://example.org/id2"]
trustDomain = "example.org"将 serversTransport 附加到服务:
tcp:
services:
Service01:
loadBalancer:
serversTransport: mytransport## Dynamic configuration
[tcp.services]
[tcp.services.Service01]
[tcp.services.Service01.loadBalancer]
serversTransport = "mytransport"labels:
- "traefik.tcp.services.Service01.loadBalancer.serversTransport=mytransport"{
// ...
"Tags": [
"traefik.tcp.services.Service01.loadBalancer.serversTransport=mytransport"
]
}配置选项¶
| 字段 | 说明 | 默认值 | 必填 |
|---|---|---|---|
serverstransport.dialTimeout |
定义连接后端 TCP 服务的超时时间。为零时不设超时。 | 30s | 否 |
serverstransport.dialKeepAlive |
定义活动网络连接的保活探测间隔。 | 15s | 否 |
serverstransport.terminationDelay |
设置代理启动终止流程后完全终止两端连接的时间限制,负值表示无截止时间。更多信息见此处。 | 100ms | 否 |
serverstransport.proxyProtocol |
定义 Proxy Protocol 配置。空的 proxyProtocol 段会启用 Proxy Protocol 版本 2。 |
否 | |
serverstransport.proxyProtocol.version |
Traefik 在 TCP 服务中支持 PROXY Protocol 版本 1 和 2。更多信息见此处。 | 2 | 否 |
serverstransport.tls |
定义 TLS 配置。空的 tls 段会启用 TLS。 |
否 | |
serverstransport.tls.serverName |
配置用于 SNI 的服务器名称。 | 否 | |
serverstransport.tls.certificates |
定义将用作 mTLS 客户端证书的证书列表(文件路径或字节数据)。 | 否 | |
serverstransport.tls.insecureSkipVerify |
控制是否验证服务器证书链和主机名。 | false | 否 |
serverstransport.tls.rootCAs |
定义验证服务器证书时使用的根证书颁发机构(用于 mTLS 连接)。 | 否 | |
serverstransport.tls.peerCertURI |
定义验证服务器证书时与 SAN URI 匹配的 URI。 | "" | 否 |
serverstransport.tls.spiffe |
定义 SPIFFE 配置。空的 spiffe 段会启用 SPIFFE(允许任意 SPIFFE ID)。 |
否 | |
serverstransport.tls.spiffe.ids |
允许的 SPIFFE ID。 此项优先于 SPIFFE TrustDomain。 |
否 | |
serverstransport.tls.spiffe.trustDomain |
允许的 SPIFFE 信任域。 | "" | 否 |
SPIFFE
使用 SPIFFE 保护 Traefik 与后端之间的连接前,必须在安装配置(以前称为静态配置)中启用它。
terminationDelay(终止延迟)¶
代理位于客户端和服务器之间,任意一端(如客户端)都可能决定终止该连接的写入能力(即发出 FIN 数据包)。 代理需要将此意图传递给另一端,因此发生这种情况时,也会对其与另一端(如后端)的连接执行相同操作。
但是,如果由于某种原因(实现不当或恶意行为),另一端最终没有执行相同操作, 连接就会一直处于半关闭状态,长期占用资源。
因此,代理一旦进入此终止流程,就会为完全终止两端连接设置截止时间。
终止延迟控制这一截止时间。 负值表示无限期(即代理本身永远不会完全终止连接)。
proxyProtocol.version(协议版本)¶
Traefik 在 TCP 服务中支持 PROXY Protocol 版本 1 和 2。
可以在 serversTransport 上设置 proxyProtocol.version 进行配置。
此选项指定使用的协议版本,取值为 1 或 2。