Traefik ServersTransport 文档
ServersTransport
ServersTransport 允许你配置 Traefik 与 HTTP 后端服务器之间的传输参数。
配置示例
声明 serversTransport
YAML 格式:
yaml
http:
serversTransports:
mytransport:
serverName: "myhost"
certificates:
- "/path/to/cert1.pem"
- "/path/to/cert2.pem"
insecureSkipVerify: true
rootcas:
- "/path/to/rootca1.pem"
- "/path/to/rootca2.pem"
maxIdleConnsPerHost: 100
disableHTTP2: true
peerCertURI: "spiffe://example.org/peer"
forwardingTimeouts:
dialTimeout: "30s"
responseHeaderTimeout: "10s"
idleConnTimeout: "60s"
readIdleTimeout: "5s"
pingTimeout: "15s"
spiffe:
ids:
- "spiffe://example.org/id1"
- "spiffe://example.org/id2"
trustDomain: "example.org"
cipherSuites:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
minVersion: "VersionTLS12"
maxVersion: "VersionTLS12"将 serversTransport 附加到服务
YAML 格式:
yaml
http:
services:
service1:
loadBalancer:
serversTransport: "mytransport"
servers:
- url: "http://private-ip-server-1/"
- url: "http://private-ip-server-2/"Kubernetes 格式:
yaml
apiVersion: traefik.io/v1alpha1
kind: ServersTransport
metadata:
name: mytransport
namespace: default
spec:
serverName: "myhost"
insecureSkipVerify: true
forwardingTimeouts:
dialTimeout: "30s"
responseHeaderTimeout: "10s"
idleConnTimeout: "60s"
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: myroute
namespace: default
spec:
entryPoints:
- web
routes:
- match: Host(`example.com`)
kind: Rule
services:
- name: myservice
port: 80
tls:
options:
name: mytlsoption
namespace: default配置选项
| 字段 | 描述 | 默认值 | 必填 |
|---|---|---|---|
serverName | 验证后端 TLS 证书时使用的主机名。 | 后端的 hostname | 否 |
certificates | 用于 mTLS 客户端认证的客户端证书列表。 | - | 否 |
insecureSkipVerify | 跳过对后端证书的验证。 | false | 否 |
rootcas | 用于验证后端证书的根 CA 证书列表。 | - | 否 |
maxIdleConnsPerHost | 每个主机的最大空闲连接数。 | 200 | 否 |
disableHTTP2 | 禁用 HTTP/2。 | false | 否 |
peerCertURI | 期望对等方证书中的 SPIFFE URI。 | - | 否 |
spiffe | SPIFFE 身份验证配置。 | - | 否 |
spiffe.ids | 允许的 SPIFFE ID 列表。 | - | 否 |
spiffe.trustDomain | 信任域。 | - | 否 |
cipherSuites | 允许的 TLS 密码套件列表。 | - | 否 |
minVersion | 最小 TLS 版本。 | - | 否 |
maxVersion | 最大 TLS 版本。 | - | 否 |
forwardingTimeouts | 转发超时配置。 | - | 否 |
forwardingTimeouts.dialTimeout | 建立连接的超时。 | 30s | 否 |
forwardingTimeouts.responseHeaderTimeout | 等待响应头的超时。 | 0(无超时) | 否 |
forwardingTimeouts.idleConnTimeout | 空闲连接超时。 | 90s | 否 |
forwardingTimeouts.readIdleTimeout | 读取空闲超时(HTTP/2)。 | 0 | 否 |
forwardingTimeouts.pingTimeout | Ping 超时(HTTP/2)。 | 15s | 否 |
适用场景
- mTLS 客户端认证:与需要客户端证书的后端通信
- 自签名证书:跳过证书验证(仅限开发环境)
- SPIFFE 身份验证:使用 SPIFFE ID 验证后端身份
- 特定 TLS 配置:为后端连接使用特定的 TLS 版本和密码套件
在生产环境使用 Traefik OSS?
如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。