Traefik:按子域进行动态路由

时间:2020-06-23 12:46:40

标签: routes traefik

问题

我有多个部署在Docker容器上的服务。我们的每组客户都应被路由到特定的服务。 示例:

  • Client1-> service1
  • Client2-> service1
  • client3-> service2

这应该使用子域来完成: client1 = client1.example.com client2 = client2.example.com

问题:

我希望此配置是动态的,这意味着Traefik需要从其他服务动态获取这些路由规则:

    我可以创建一个提供主机名的服务,例如返回 Traefik应该路由到的服务名称。
  • 或者也许当添加客户时,我可以将此规则推给Traefik。

详细信息:

当我创建一个saas应用程序时,此功能很有用。

非常感谢您。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是为每个服务的已定义路由器使用正则表达式,并在加入新客户端后更新正则表达式

例如,将此标签添加到服务1

 - traefik.http.routers.app-backend.rule=HostRegexp(`{subdomain:(clinet1)}.example.com`)

,当您添加应由服务1服务的另一个客户端时,只需将标签更新为

 - traefik.http.routers.app-backend.rule=HostRegexp(`{subdomain:(clinet1|clientX)}.example.com`)