Traefik: 自动将子域名添加到 Cloudflare DNS

4
我使用Traefik作为反向代理来托管我的服务,它运行得非常好。每当我添加一个新服务,Traefik就会检测到并相应地路由查询。每个服务都被路由到我的主域名的子域名下。
唯一需要手动操作的步骤是在我的新子域名中添加DNS记录。我希望能够自动化这个过程。
我知道Cloudflare有一个管理DNS记录的API,我可以从那里开始工作。但我不知道是否可以挂钩一个脚本,以便在Traefik检测到新的子域名时触发它...
请问我应该在哪里调查Traefik方面的信息,以便检测到添加了新的子域名事件?
3个回答

3

0

自动DNS由upload.express处理

通配符DNS记录

除了特殊情况的认可,几乎所有DNS供应商都支持通配符DNS记录。通过创建一个名为“*.example.com”的“A”部分,该部分指向您服务器的IP地址,任何来自您子域的请求都将重定向到您服务器的IP。通过这样做,您可以省去实施自己的域管理微服务的需要。

您还可以使用Traefik Doc中解释的优先级。

[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"

另外,我们可以通过Docker实现多个HTPS子域,具体请参考此处的说明。


正如问题中明确指出的那样,这是关于Cloudflare的问题,免费计划不支持通配符记录。 - CCH
1
现在,您可以使用Cloudflare和Lets Encrypt来完成这项任务,因为Lets Encrypt支持通配符证书。我目前正在使用我的自托管(非Traefik)服务器进行此操作。我在Cloudflare中设置了指向我的服务器的'' A和AAAA记录,服务器具有.example.com通配符证书,并且该证书用于所有子域。Traefik可以处理使用Lets Encrypt生成通配符证书 https://docs.traefik.io/v1.6/configuration/acme/#wildcard-domains - Troy

0

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

这个软件已经更新,支持A; AAA; CNAME是一种DNS记录类型,我认为使用这个工具比其他工具更容易。示例。
version: 3
services:
  cloudflare-companion:
    image: tiredofit/traefik-cloudflare-companion
    container_name: cloudflare-companion
    volumes:
      - ./logs:/logs
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TIMEZONE=America/Vancouver

      - LOG_TYPE=BOTH
      - LOG_LEVEL=INFO

      - TRAEFIK_VERSION=2
      - CF_EMAIL=email@example.com
      - CF_TOKEN=xxxxxxxxxxxxxxxxxxxx
      - RC_TYPE=CNAME

      - TARGET_DOMAIN=host.example.org
      - DOMAIN1=example.org
      - DOMAIN1_ZONE_ID=1234567890
      #- DOCKER_HOST=tcp://198.51.100.32:2376
      #- DOCKER_CERT_PATH=/docker-certs
      #- DOCKER_TLS_VERIFY=1

      #- TRAEFIK_FILTER_LABEL=traefik.constraint
      #- TRAEFIK_FILTER=proxy-public
    networks:
      - services
    restart: always

networks:
  services:
    external: true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接