Traefik(+ Docker)path设置为根和子文件夹分派

通过在Docker和Traefik上创build反向代理,我想在同一个主机上将多个path分派到两个不同的后端服务器中,

1. traefik.test/ -> app1/ 2. traefik.test/post/blabla -> app1/post/blabla 3. traefik.test/user/blabla -> app2/user/blabla 

如果规则只有#2和#3,我可以在docker-compose.yml中这样做

 app1: image: akky/app1 labels: - "traefik.backend=app1" - "traefik.frontend.rule=Host:traefik.test;PathPrefix:/post,/comment" app2: image: akky/app2 labels: - "traefik.backend=app2" - "traefik.frontend.rule=Host:traefik.test;PathPrefix:/user,/group" 

但是,在第一个PathPrefix中添加根“/”似乎是在app2上隐藏/用户。 以下不起作用,所有内容都转到app1后端。

  - "traefik.frontend.rule=Host:traefik.test;PathPrefix:/,/post,/group" 

规则“主机:”和“PathPrefix”似乎工作为“与”,但我想使用“或”(确切/,或以/后开始)。 我search了一下,知道从1.3.0版本开始可以定向多个规则,根据pull request#1257多行添加服务名。

通过了解,我所做的就是这样,

 app1: image: akky/app1 labels: - "traefik.app1_subfolder.backend=app1" - "traefik.app1_subfolder.frontend.rule=Host:traefik.test;PathPrefix:/post,/group" - "traefik.app1_rootfolder.backend=app1" - "traefik.app1_rootfolder.frontend.rule=Host:traefik.test;Path:/" app2: image: akky/app2 labels: - "traefik.backend=app2" - "traefik.frontend.rule=Host:traefik.test;PathPrefix:/user" 

现在它按要求工作,根访问被分派到app1 /。

我的问题是,这是正确的方式? 它不像我这样,因为这个根和子文件夹派遣应该是一个典型的用例。