2017-05-28 59 views
1

我正在嘗試使用Traefik在我的Docker羣集模式羣集中部署代理多個應用程序。爲Traefik定義主機和路徑前端規則

我已經知道它是代理一個已命名的主機,但我希望它在一個已命名的主機和路徑上進行代理,但我無法解決需要使用的標籤。

這是docker service命令我使用:

docker service create --network traefik-net --label "traefik.port=9000" --label "traefik.docker.network =traefik-net" --label "traefik.frontend.rule=Host:`hostname -f`" --label="traefik.backend=portainer " --constraint "node.role == manager" -p 9000:9000 --mount "type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock" 
--name portainer portainer/portainer 

如果主機dummy.localhost然後我能夠打到portainer應用上http://dummy.localhost。不過,我想修改它,以便我必須使用http://dummy.localhost/portainer

我已經看到,有些方法可以爲Traefik使用toml文件時執行此操作,但我在我部署的泊塢員服務上使用watch模式和標籤。

如何在我的標籤中組合多個前端規則,以便可以在主機名和路徑上代理此(和任何其他)應用程序?

回答

3

如果您希望應用多個規則以使路由決策生效,請用分號分隔它們。例如:

Host: <your host rule>; PathPrefixStrip: /portainer 

上述裝置是什麼:如果主機和路徑前綴匹配,Traefik將請求路由到相關聯的後端(一個或多個)(和轉發之前指定的路徑前綴剝離)。這在標籤內定義時甚至可以工作。

有關詳細信息,請參見the frontend documentation

+0

非常感謝你。我正在使用','而不是';'設置多個規則 –