入口点(EntryPoints)¶
打开传入请求的连接
EntryPoints(入口点)是 Traefik 的网络入口点。它们定义了接收请求的端口(HTTP 或者 TCP)。
配置示例¶
仅80端口
## 静态配置
[entryPoints]
[entryPoints.web]
address = ":80"
## 静态配置
entryPoints:
web:
address: ":80"
## 静态配置
--entryPoints.web.address=:80
我们定义一个名为 web
的 entrypoint
,在端口 80
上进行监听。
80 & 443 端口
## 静态配置
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web-secure]
address = ":443"
## 静态配置
entryPoints:
web:
address: ":80"
web-secure:
address: ":443"
## 静态配置
--entryPoints.web.address=:80
--entryPoints.web-secure.address=:443
- 定义了两个
entrypoints
:一个叫web
,另一个加web-secure
。 web
监听80
端口,web-secure
监听443
端口。
配置¶
一般配置¶
EntryPoints 是 静态配置 的一部分。我们可以使用一个 toml 文件、CLI 参数或者一个 key-value 存储来定义他们。
可以查看完整的文档来获取可用选项
## 静态配置
[entryPoints]
[entryPoints.name]
address = ":8888"
[entryPoints.name.transport]
[entryPoints.name.transport.lifeCycle]
requestAcceptGraceTimeout = 42
graceTimeOut = 42
[entryPoints.name.transport.respondingTimeouts]
readTimeout = 42
writeTimeout = 42
idleTimeout = 42
[entryPoints.name.proxyProtocol]
insecure = true
trustedIPs = ["127.0.0.1", "192.168.0.1"]
[entryPoints.name.forwardedHeaders]
insecure = true
trustedIPs = ["127.0.0.1", "192.168.0.1"]
## 静态配置
entryPoints:
name:
address: ":8888"
transport:
lifeCycle:
requestAcceptGraceTimeout: 42
graceTimeOut: 42
respondingTimeouts:
readTimeout: 42
writeTimeout: 42
idleTimeout: 42
proxyProtocol:
insecure: true
trustedIPs:
- "127.0.0.1"
- "192.168.0.1"
forwardedHeaders:
insecure: true
trustedIPs:
- "127.0.0.1"
- "192.168.0.1"
## 静态配置
--entryPoints.name.address=:8888
--entryPoints.name.transport.lifeCycle.requestAcceptGraceTimeout=42
--entryPoints.name.transport.lifeCycle.graceTimeOut=42
--entryPoints.name.transport.respondingTimeouts.readTimeout=42
--entryPoints.name.transport.respondingTimeouts.writeTimeout=42
--entryPoints.name.transport.respondingTimeouts.idleTimeout=42
--entryPoints.name.proxyProtocol.insecure=true
--entryPoints.name.proxyProtocol.trustedIPs="127.0.0.1,192.168.0.1"
--entryPoints.name.forwardedHeaders.insecure=true
--entryPoints.name.forwardedHeaders.trustedIPs="127.0.0.1,192.168.0.1"
转发的 Header¶
你可以将 Traefik 配置为信任转发的 Headers 信息(X-Forwarded-*
)。
forwardedHeaders.trustedIPs
信任来着特定 IP 的转发头信息。
## 静态配置
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.forwardedHeaders]
trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
## 静态配置
entryPoints:
web:
address: ":80"
forwardedHeaders:
trustedIPs:
- "127.0.0.1/32"
- "192.168.1.7"
## 静态配置
--entryPoints.web.address=:80
--entryPoints.web.forwardedHeaders.trustedIPs=127.0.0.1/32,192.168.1.7
forwardedHeaders.insecure
非安全模式 (实战信任转发的头信息)。
## 静态配置
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.forwardedHeaders]
insecure = true
## 静态配置
entryPoints:
web:
address: ":80"
forwardedHeaders:
insecure: true
## 静态配置
--entryPoints.web.address=:80
--entryPoints.web.forwardedHeaders.insecure
Transport¶
respondingTimeouts
¶
respondingTimeouts
是对 Traefik 实例的传入请求的超时配置。
transport.respondingTimeouts.readTimeout
可选, 默认=0s
readTimeout
是读取整个请求(包括 body)的最大时间。
如果为0,则不存在超时。
可以使用 time.ParseDuration 支持的格式或者数字进行提供。 如果没有提供单位,则以秒
为单位。
## 静态配置
[entryPoints]
[entryPoints.name]
address = ":8888"
[entryPoints.name.transport]
[entryPoints.name.transport.respondingTimeouts]
readTimeout = 42
## 静态配置
entryPoints:
name:
address: ":8888"
transport:
respondingTimeouts:
readTimeout: 42
## 静态配置
--entryPoints.name.address=:8888
--entryPoints.name.transport.respondingTimeouts.readTimeout=42
transport.respondingTimeouts.writeTimeout
可选, 默认=0s
writeTimeout
是写入响应的最大超时间。它包含了读取请求头结束到写入响应结束的时间。如果设置为0,则不存在超时。
可以用 time.PraseDuration 支持的格式或者原始的数字来进行设置。 如果没有提供单位,则以秒为单位解析该值。
## 静态配置
[entryPoints]
[entryPoints.name]
address = ":8888"
[entryPoints.name.transport]
[entryPoints.name.transport.respondingTimeouts]
writeTimeout = 42
## 静态配置
entryPoints:
name:
address: ":8888"
transport:
respondingTimeouts:
writeTimeout: 42
## 静态配置
--entryPoints.name.address=:8888
--entryPoints.name.transport.respondingTimeouts.writeTimeout=42
transport.respondingTimeouts.idleTimeout
可选, 默认 180s
idleTimeout
是空闲(keep-alive)连接在关闭自身之前将保持空闲的最大时间。 如果为0,则不存在超时。
同样可以用 time.PraseDuration 支持的格式或者原始的数字来进行设置。 如果没有提供单位,则以秒为单位解析该值。
## 静态配置
[entryPoints]
[entryPoints.name]
address = ":8888"
[entryPoints.name.transport]
[entryPoints.name.transport.respondingTimeouts]
idleTimeout = 42
## 静态配置
entryPoints:
name:
address: ":8888"
transport:
respondingTimeouts:
idleTimeout: 42
## 静态配置
--entryPoints.name.address=:8888
--entryPoints.name.transport.respondingTimeouts.idleTimeout=42
lifeCycle
¶
在关闭阶段空值 Traefik 的行为。
lifeCycle.requestAcceptGraceTimeout
可选, 默认=0s
在启动正常终止之前继续接受请求的持续时间(由graceTimeout
选项定义),该选项旨在给下游负载平衡器足够的时间来让 Traefik 停止。
同样可以用 time.PraseDuration 支持的格式或者原始的数字来进行设置。 如果没有提供单位,则以秒为单位解析该值。
零时长将禁用接受宽限期的请求,即 Traefik 将立即进入宽限期。
## 静态配置
[entryPoints]
[entryPoints.name]
address = ":8888"
[entryPoints.name.transport]
[entryPoints.name.transport.lifeCycle]
requestAcceptGraceTimeout = 42
## 静态配置
entryPoints:
name:
address: ":8888"
transport:
lifeCycle:
requestAcceptGraceTimeout: 42
## 静态配置
--entryPoints.name.address=:8888
--entryPoints.name.transport.lifeCycle.requestAcceptGraceTimeout=42
lifeCycle.graceTimeOut
可选, 默认 10s
在 Traefik 停止之前完成请求的持续时间。
同样可以用 time.PraseDuration 支持的格式或者原始的数字来进行设置。 如果没有提供单位,则以秒为单位解析该值。
在该时间范围内,不再接受任何新的请求。
## 静态配置
[entryPoints]
[entryPoints.name]
address = ":8888"
[entryPoints.name.transport]
[entryPoints.name.transport.lifeCycle]
graceTimeOut = 42
## 静态配置
entryPoints:
name:
address: ":8888"
transport:
lifeCycle:
graceTimeOut: 42
## 静态配置
--entryPoints.name.address=:8888
--entryPoints.name.transport.lifeCycle.graceTimeOut=42
代理协议¶
Traefik 支持 ProxyProtocol 版本1和版本2.
如果为入口点启用了代理协议头解析,则该入口点可以接受具有或不具有代理协议头的连接。如果传递了代理协议头,则会自动确定版本。
proxyProtocol.trustedIPs
使用受信任的 IP 启用代理协议。
## 静态配置
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.proxyProtocol]
trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
## 静态配置
entryPoints:
web:
address: ":80"
proxyProtocol:
trustedIPs:
- "127.0.0.1/32"
- "192.168.1.7"
--entryPoints.web.address=:80
--entryPoints.web.proxyProtocol.trustedIPs=127.0.0.1/32,192.168.1.7
仅在trustedIPs
中的 IP 会导致远程客户端地址被替换:在这里声明负载均衡器 IP 或者 CIDR 范围。
proxyProtocol.insecure
非安全模式 (仅在测试环境)。
在测试环境,可以将 Traefik 配置为信任所有的传入连接,这样做,将替换每个远程客户端地址(trustedIPs
将不会有任何作用)
## 静态配置
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.proxyProtocol]
insecure = true
## 静态配置
entryPoints:
web:
address: ":80"
proxyProtocol:
insecure: true
--entryPoints.web.address=:80
--entryPoints.web.proxyProtocol.insecure
在另外的负载均衡器后面使用 Traefik
当在另外一个负载均衡器后面使用 Traefik 时,请确保在两边都配置上代理协议。
否则可能会给你的系统带来安全风险(启用请求伪造)。