将流量直接传递到容器以回答Traefik

时间:2017-07-14 01:25:42

标签: traefik

我有一个基于https://github.com/silvio/docker-matrix的容器('矩阵')(虽然这可能并不重要)。

它在端口8448和3478(不是80或443)上运行服务。

没有运行traefik,只运行'矩阵'容器,在'矩阵的内部'容器,我可以运行LetsEncrypt的certbot,该请求告诉LetsEncrypt尝试通过端口443联系我并提供ssl证书,如下所示:

  

certbot certonly --standalone --test-cert --email admin@amazing.site --agree-tos -d m.amazing.site

面临挑战,接受挑战,证书保存在容器中的dir / etc / letsencrypt中。

好的,现在我想在运行Traefik时这样做。

我在Docker-compose文件中为Traefik传递了我的参数,如下所示:

labels:
  - "traefik.acme=false"
  - "traefik.enable=true"
  - "traefik.backend=matrix"
  - "traefik.frontend.rule=Host:m.amazing.site"
  - "traefik.port=443"
restart: always
expose:
 - 443
ports:
  - "8448:8448"
  - "3478:3478"

当我在容器中运行挑战时(与上面相同的命令)

  

certbot certonly --standalone --test-cert --email admin@amazing.site --agree-tos -d m.amazing.site

我在Traefik日志中获得以下内容

  

时间=" 2017-07-14T01:04:35Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,重试453.949201ms"   时间=" 2017-07-14T01:04:35Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,重试808.788592ms"   时间=" 2017-07-14T01:04:36Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,在1.138006833s"中重试   时间=" 2017-07-14T01:04:37Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,在2.436785791s"中重试   时间=" 2017-07-14T01:04:40Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,在3.055167113s"中重试   时间=" 2017-07-14T01:04:43Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,在4.856677044s"中重试   时间=" 2017-07-14T01:04:48Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,在7.544878611s"中重试   时间=" 2017-07-14T01:04:55Z" level = error msg ="获取证书时出错:找不到域b374a9118f855cacdb0096846a3dfa0c.f7c92b61d040f9ba250f14cc533ba4b8.acme.invalid的质询证书,在6.313970727s"中重试   时间=" 2017-07-14T01:05:01Z" level = error msg ="获取证书时出错:无法找到域8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid"   时间=" 2017-07-14T01:05:01Z" level = debug msg =" ACME什么也没得到8b1e27af665c4676b47236f25c3ccc73.1313b1cc8ceaaa7467ba2e5845c08fde.acme.invalid"   2017/07/14 01:05:01 server.go:2753:http:来自66.133.109.36:55264的TLS握手错误:EOF

请注意这些是真实的日志。没有提到我想要验证的实际域名。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您无法立即为特定主机禁用acme,因为acme安装了在所有规则之前执行的路由。

我想出了一种解决方法:

https://gist.github.com/micw/67faf5cd3d4a6f64568ca2bb9a051230

最好的问候, 迈克尔。