traefik中的默认或后备容器(docker)

时间:2018-07-17 07:04:59

标签: docker docker-compose traefik

我正在使用traefik和docker在我的服务器上运行多个服务。如果(子)域没有匹配的容器,如何指定默认或备用容器?例如,我将example.com用于我的网站,将cloud.example.com用于我的nextcloud。但是,当有人使用www.example.com或wiki.example(或其他可能的子域之一)时,它应该重定向到我的网站,而不显示404错误页面。

每个容器具有以下标签:

  - traefik.port=<port>
  - traefik.frontend.rule=Host:<sub-1>.example.com,<sub-2>.example.com
  - traefik.frontend.entryPoints=http,https

traefik配置在此处(我使用的是traefik:1.6-alpine图片):

# General
logLevel = "INFO"

# EntryPoints
[entryPoints]
  [entryPoints.http]
    address = ":80"

    [entryPoints.http.redirect]
      entryPoint = "https"

  [entryPoints.https]
    address = ":443"

    [entryPoints.https.tls]

# Let's Encrypt
[acme]
  entryPoint = "https"
  email = "info@example.com"
  storage = "/etc/traefik/acme/acme.json"
  onHostRule = true
  [acme.httpChallenge]
    entryPoint = "http"
  [[acme.domains]]
    main = "example.com"

# Docker
[docker]
  domain = "localhost"
  watch = true

1 个答案:

答案 0 :(得分:2)

如果您想让所有流量通过,但有几个子域可以访问您的网络容器:

替换:traefik.frontend.rule=Host:<sub-1>.example.com,<sub-2>.example.com

使用:traefik.frontend.rule=HostRegexp:{subdomain:[a-z0-9]+}.example.com,并添加优先级标签10:traefik.frontend.priority=10

然后,在回落到网站之前,对要匹配的任何其他服务设置更高的优先级。