我在查找任何方式以使我的情况可行时遇到了一些麻烦。我有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发生冲突