【问题标题】:Traefik : Auto-add subdomains to cloudflare DNSTraefik:自动将子域添加到 cloudflare DNS
【发布时间】:2020-01-06 03:25:16
【问题描述】:

我使用 traefik 作为我的自托管服务的反向代理,它就像一个魅力。每次我添加新服务时,traefik 都会检测到它并相应地路由查询。每个服务都被路由到我的主域的一个子域。

我仍然需要做的唯一手动步骤是在 DNS 中为我​​的新子域添加一条新记录。我想自动化它。

我知道 Cloudflare 有一个用于 managing DNS records 的 API,我可以从那里解决它。但是我不知道我是否可以挂钩一个脚本,例如当 traefik 检测到新的子域时会触发......

关于我可以在 traefik 方面进行调查以检测添加新子域的事件的任何指针?

【问题讨论】:

    标签: cloudflare traefik


    【解决方案1】:

    自动 DNS 由 upload.express 负责

    通配符 DNS 记录

    除了特殊情况背书,几乎所有 DNS 供应商都支持通配符 DNS 记录。通过创建一个名为“*.example.com”的“A”部分,该部分专注于您的服务器的 IP 地址,来自您的任何子域的任何请求都会转移到您的服务器的 IP。通过这样做,您无需在董事会微服务中执行自己的空间。

    您也可以使用 Traefik 文档中解释的优先级。

    [frontends]
    [frontends.frontend1]
    backend = "backend1"
    priority = 20
    passHostHeader = true
    [frontends.frontend1.routes.test_1]
    rule = "PathPrefix:/to"
    [frontends.frontend2]
    backend = "backend2"
    passHostHeader = true
    [frontends.frontend2.routes.test_1]
    rule = "PathPrefix:/toto"
    

    我们还可以按照here 的说明使用 Docker 建立多 HTPS 子域

    【讨论】:

    • 正如问题中明确指出的那样,这专门针对 cloudflare,它不支持免费计划的通配符记录。
    • 现在 Lets Encrypt 可以使用通配符证书,您可以使用 Cloudflare 和 Lets Encrypt 来做到这一点。我目前正在使用我的自托管(非 Traefik)服务器执行此操作。我有指向我的服务器的“*”的 Cloudflare A 和 AAAA 记录,服务器有一个 *.example.com 通配符证书,这用于所有子域。 Traefik 可以使用 Lets Encrypt docs.traefik.io/v1.6/configuration/acme/#wildcard-domains 处理生成通配符证书
    【解决方案2】:

    最后我找到了一个可以满足我需求的解决方案:

    https://github.com/tiredofit/docker-traefik-cloudflare-companion

    它在内部侦听 docker 事件,然后重新检查所有正在运行的容器以检测是否有一些标签发生了变化。

    所以钩子不在 traefik 中,而是直接在 Docker 中。

    【讨论】:

      猜你喜欢
      • 2018-02-05
      • 2017-03-21
      • 2023-01-06
      • 2016-08-21
      • 2021-05-29
      • 2015-06-15
      • 2019-08-05
      • 2017-05-17
      • 2021-10-21
      相关资源
      最近更新 更多