Traefik:应用程序之间的HTTPS访问不起作用

时间:2017-09-27 11:16:56

标签: docker traefik

在我们的设置中,我们使用最新的traefik作为反向代理,它具有到演示融合和密钥泄露服务器的路由。

         traefik 
         |     |
confluence     keycloak

每个应用程序都有自己的docker-compose文件并单独启动。

Traefik定义了一个虚拟网络,汇合和密钥泄露也在这个网络中。使用正确的DNS设置,用户可以访问traefik,confluence和keycloak。它按预期工作。

要使用keycloak web SSO系统,汇流系统必须能够使用traefik使用FQDN和HTTPS访问keycloak,反之亦然。这不起作用。

可以直接连接到服务(我们假设这是由于共享网络),但是如果我们连接到keycloak容器并执行类似

的操作
curl -k https://confluence.our.domain -v

我们可以看到与docker-host的连接已完成(IP匹配)但traefik似乎没有进行任何路由。

如果我们连接到keycloak容器并执行

curl -k -v -H 'Host: confluence.our.domain' https://traefik

路由完成。

有任何建议,我们做错了什么或我们应该检查什么?

感谢任何帮助, 克里斯托弗

2 个答案:

答案 0 :(得分:1)

您应该在撰写文件中使用extra_host键在容器中插入主机条目。您想要创建指向您的traefik反向代理

的FQDN

这将确保您使用正确的主机名,以使https有效并使路由正常工作

version: '3'
service:
  xyz:
    extra_host:
      - "confluence.our.domain:<traefikip>"
  ...

答案 1 :(得分:0)

对于可与所有与traefik交谈的容器一起使用的基于DNS的配置,请在compose.yml文件中使用以下网络“alias”部分::

version: '3.3'

networks:
  proxy:
    external:
      name: proxy

services:
  traefik:
    image: traefik:1.4
    networks:
    - proxy:
        aliases:
        - confluence.our.domain

别名可以是一个列表,并将在上面示例中的“代理”网络上的所有内容中应用于DNS。