【问题标题】:Traefik Docker with wildcard domain带有通配符域的 Traefik Docker
【发布时间】:2019-08-07 18:25:09
【问题描述】:

我正在尝试使用 Let's Encrypt SSL 设置我的 Traefik Docker:

这是我的traefik.toml

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.dashboard]
    address = ":88"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:19081987"]
  [entryPoints.http]
    address = ":80"
      [entryPoints.http.redirect]
        entryPoint = "https"
  [entryPoints.https]
    address = ":443"
      [entryPoints.https.tls]

[api]
entrypoint="dashboard"

[acme]
email = "myemail@gmail.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = false
  [acme.httpChallenge]
  entryPoint = "http"

[docker]
domain = "mysite.com"
watch = true
network = "web"

[[acme.domains]]
   main = "mysite.com"
[[acme.domains]]
   main = "*.mysite.com"

我的docker-compose 带有 WordPress 和管理员的文件

version: '3.7'
services:
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - ./wordpress_files:/var/www/html
       - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
     restart: always
     networks:
       - web
     container_name: mysitewp
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: user
       WORDPRESS_DB_PASSWORD: pass
       WORDPRESS_DB_NAME: mysitedp
     labels:
       - "traefik.backend=mysitewp"
       - "traefik.docker.network=web"
       - "traefik.frontend.rule=Host:mysite.com"
       - "traefik.enable=true"
       - "traefik.port=80"

   db:
     image: mysql:5.7
     volumes:
       - ./db_data:/var/lib/mysql
     restart: always
     networks:
       - web
     container_name: mysitedb
     environment:
       MYSQL_ROOT_PASSWORD: pass
       MYSQL_DATABASE: mysitedb
       MYSQL_USER: user
       MYSQL_PASSWORD: pass

   adminer:
     image: adminer
     restart: always
     networks:
       - web
     ports:
       - 89:8080
     labels:
       - "traefik.backend=adminer"
       - "traefik.docker.network=web"
       - "hostname=adminer"
       - "traefik.frontend.rule=Host:adminer.mysite.com"
       - "traefik.enable=true"
       - "traefik.port=89"
     depends_on:
       - db

networks:
   web:
     external: true

除了管理员(无法访问adminer.mysite.com)外,一切正常(我可以使用 https 访问我的网站)。我检查了 Traefik 日志

unable to generate a certificate for the domains

Traefik 似乎无法为通配符域 (*.mysite.com) 生成证书。任何带有 Traefik 和 Let's Encrypt 的配置通配符域?

【问题讨论】:

    标签: docker wildcard lets-encrypt traefik


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      根据docs,您可以手动运行traefik并生成证书。

      可以在配置文件中进行以下更改,

      [acme]
      email = "myemail@gmail.com"
      storage = "acme.json"
      entryPoint = "https"
      onHostRule = false
      
      [acme.dnsChallenge]
        provider = "manual"
      

      【讨论】:

      • 感谢您的信息。假设我使用 bluehost 作为提供者。如何“手动”生成证书还是自动生成证书(添加到 traefik.toml)?
      • 如果是其他provider,可以加上provider="bluehost",delayBeforeCheck=600(秒)。这将等待提供商创建 DNS 条目并在 10 分钟后尝试
      • 您好,似乎 traefik 不支持“dns-01 挑战”中的“bluehost”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 2019-11-12
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多