跳转至

入口点(EntryPoints)

打开传入请求的连接

entryPoints

EntryPoints(入口点)是 Traefik 的网络入口点。它们定义了接收请求的端口(HTTP 或者 TCP)。

配置示例

仅80端口
## 静态配置
[entryPoints]
  [entryPoints.web]
    address = ":80"
## 静态配置
entryPoints:
  web:
   address: ":80"
## 静态配置
--entryPoints.web.address=:80

我们定义一个名为 webentrypoint,在端口 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"

你可以将 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 时,请确保在两边都配置上代理协议。

否则可能会给你的系统带来安全风险(启用请求伪造)。