使用Traefik反向代理的Docker设置-尽管一个域上的设置和配置相同,但另一个域上的NET:ERR_CERT_AUTHORITY_INVALID仍然有效

时间:2019-03-20 13:27:40

标签: docker nginx dns docker-compose traefik

我有一个使用Traefik作为反向代理的Docker设置。 我有一个NGINX容器提供静态页面。 两个域(example-A.com和example-B.de)应该公开同一静态页面。 虽然example-A.com可以按预期正常工作,但是example-B.de出现NET:ERR_CERT_AUTHORITY_INVALID错误。

example-A.com已在Google域中注册。 其名称为“ @”的A记录指向我的Docker主机的IP地址。

example-B.de已在另一个域名注册商处注册。 它的A记录指向我的Docker主机的IP地址(即与例如-A.com相同的IP)。我无法使用此注册商配置名称“ @”,只能设置A记录和目标IP。

我的traefik.toml是:

defaultEntryPoints = ["http", "https"]

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

[api]
entrypoint="dashboard"

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

[docker]
domain = "my-main-domain.net"
watch = true
network = "traefik"

我的docker-compose.yml是:

version: "3"

services:
  my-web:
    image: nginx:alpine
    container_name: my-web
    volumes:
    - /home/my-directory:/usr/share/nginx/html:ro
    networks:
    - traefik
    labels:
    - traefik.enable=true
    - traefik.frontend.rule=Host:example-B.de,example-A.com
    restart: always
  jupyter:
    [config here... with "traefik.frontend.rule=Host:subdomain1.my-main-domain.net"... remainder of config]
  ghost:
    [config here... with "traefik.frontend.rule=Host:subdomain2.my-main-domain.net"... remainder of config]

networks:
  traefik:
    external: true

奇怪的行为是example-A.com可以按预期方式工作(HTTP和HTTPS),而example-B.de却因NET:ERR_CERT_AUTHORITY_INVALID(HTTPS; HTTP路由到HTTPS,即相同的错误)而失败,尽管设置完全相同在同一Docker主机上相同容器中的docker-compose.yml中(请参阅traefik.frontend.rule),并在同一traefik.toml下运行。

另一个奇怪的行为:我的手机(Chrome)出现NET:ERR_CERT_AUTHORITY_INVALID错误。在我的计算机(Chrome)上,URL栏中显示“找不到404页”(来自Traefik)和“不安全”,并带有详细信息“ TRAEFIK DEFAULT CERT-自签名根证书-此证书尚未由第三方签名“。

我的docker-compose.yml中的另外两个docker服务(jupyter和ghost)正在按预期运行。

我重新启动traefik,并在docker-compose.yml上使docker正常运行。

我能看到的唯一区别是不同的域名注册商和DNS A记录的区别,如上所述。

该问题似乎与SSL有关,但是据我所知(有限),域注册商与SSL证书无关。另外,由于浏览器可以正确解析域,因此DNS设置似乎不是问题,而是显示错误而不是页面。

有人能够在我的设置或配置中发现问题,并且可以为我指出修复程序或如何进行进一步调查吗?

1 个答案:

答案 0 :(得分:1)

正如@codinghaus在他的评论中指出的那样,解决方案是在域注册商处向域添加CAA记录。 我添加了属性标签“ issue”和值“ letsencrypt.org”。 然后我重新启动了traefik以及我的docker-compose.yml。