首页 文章

在Docker Swarm模式下运行Traefik后面的内部和外部服务

提问于
浏览
0

我找不到任何办法让我的情况变得可行 . 我有2个申请:

1:在sub1.domain.com上运行的外部服务Web应用程序 . 如果我用acme(LetsEncrypt)在traefik后面运行这个应用程序,它运行正常 . 我还有一些后端服务(api / auth),它们都运行有效的LetsEncrypt证书,并通过traefik将他们的http流量重定向到https

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

我必须为此服务提供某种形式的http到https转发 .

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

我一直试图让这两个服务在同一个traefik实例后面运行,但我能想到的所有可能的情况都不起作用,因为它们要么仍在进行中,要么只是无法正常工作 .

场景

1:没有http到https重定向,不要打扰内部服务的https,只需使用http . 然后在外部Web服务的后端内部重定向到https .

Problems

  • 无法拥有2个traefik转发的traefik端口无法将1个单端口转发到另一个proto(因为后端始终是http或https端口)

  • 在默认证书上使用ACME

2:在默认证书上使用ACME

别人thought this was a good idea . 它还没有工作 .

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

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

编辑:我可能能够解决4中描述的问题,以使其工作 . 看来内部DNS可能与traefik发生冲突

1 回答

  • 0

    有人认为我们的内部DNS区域将按子域添加,这意味着SOA请求返回子域名作为名称 . 由于内部dns区域与cloudflare dns不同,因此cloudflare的效果不佳 .

    将此更改为具有子域记录的主区域可修复该问题(与 delayDontCheckDNS 选项结合使用) .

相关问题