我有一个使用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设置似乎不是问题,而是显示错误而不是页面。
有人能够在我的设置或配置中发现问题,并且可以为我指出修复程序或如何进行进一步调查吗?
答案 0 :(得分:1)
正如@codinghaus在他的评论中指出的那样,解决方案是在域注册商处向域添加CAA记录。 我添加了属性标签“ issue”和值“ letsencrypt.org”。 然后我重新启动了traefik以及我的docker-compose.yml。