跳到正文
Træfɪk

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。


版权所有 © 头文件软件工作室

文档由 HeadFile Studio 翻译。

Traefik v3.7 中文快照 · 原文版权归 Traefik Labs 及贡献者所有 · MIT 许可证