2017-09-05 82 views
0

我在查找任何方式以使我的情况可行时遇到了一些麻烦。我有2个应用程序:在Docker群集模式下运行在Traefik后面的内部和外部服务

1:在sub1.domain.com上运行的外部服务Web应用程序。如果我用trame(LetsEncrypt)在traefik后面运行这个应用程序,它工作正常。我有几个后端服务(API/AUTH),所有具有有效LetsEncrypt证书运行,并得到他们的HTTP流量通过traefik重定向到https

[entryPoints.http.redirect] 
    entryPoint = "https" 

我必须有某种形式的HTTP到HTTPS转发此服务。

2:在sub2.domain.com上运行的内部服务Web应用程序。如果我将它设置为默认证书,或者如果我在应用程序本身(在tomcat中)使用它,我有一个自签名可信证书(内部CA),它在traefik后面工作正常。然而,因为这是一项内部服务,如果它解决了我的问题,我可以在没有ssl的情况下生活。但是,这不适用于traefik的http to https转发。

我一直在试图让这两个服务在相同的traefik实例后面运行,但所有可能的场景我可以想到的都不起作用,因为它们要么仍在工作中,要么只是简单地不工作。

方案

1:没有HTTP到HTTPS重定向,不以https打扰的内部服务和只使用HTTP。然后在外部web服务的后端内部重定向到https。

问题

  • 无法具有2 traefik端口,traefik转发太无法 前进1个单端口到另一个原(因为后端总是 http或https端口)
  • 使用ACME在默认证书

2:使用ACME在默认证书

其他人thought this was a good idea。它只是还没有工作。

3:重新使用后端ssl证书。有没有“ssl终止”traefik只是重定向。我不确定这是否是一回事,但有一个选项叫做“passTLSCert”。但是,这似乎只能在.toml文件中定义的前端不可用(可能是因为我使用docker作为后端)。

4:使用DNS-01质询为我的内部服务创建SSL证书。 听起来像这样可以工作,所以我现在使用CloudFlare并且有一个API密钥。但是,它似乎不适用于子域。并且对我的问题的报告没有答复:https://github.com/containous/traefik/issues/1953

编辑:我也许能解决4中描述的问题来得到这个工作。看来内部DNS可能与traefik发生冲突

回答

0

有人决定,我们内部的DNS区域将每个子域加入,这意味着SOA请求返回的子域名作为名称。这对于cloudflare来说并不好,因为内部dns区域与cloudflare dns不同。

将此项更改为主区域并记录了子域名解决了问题(与delayDontCheckDNS选项结合使用)。

相关问题