web-dev-qa-db-ja.com

Traefikのホストとパスのフロントエンドルールを定義する

Traefikを使用して、Docker Swarmモードのクラスターに複数のプロキシアプリケーションをデプロイしようとしています。

名前付きホストをプロキシするように取得しましたが、名前付きホストとパスでプロキシしたいのですが、使用する必要があるラベルを計算できません。

これは私が使用しているdocker serviceコマンドです。

 docker service create \
                       \
    --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の場合、http://dummy.localhostで移植アプリをヒットできます。ただし、http://dummy.localhost/portainerを使用する必要があるように変更します。

Traefikのtomlファイルを使用する場合にこれを行う方法があることを確認しましたが、展開しているDockerサービスで監視モードとラベルを使用しています。

ラベルに複数のフロントエンドルールを組み合わせて、この(およびその他の)アプリケーションをホスト名とパスでプロキシできるようにするにはどうすればよいですか?

10
Russell Seymour

ルーティングの決定を有効にするために複数のルールを適用する場合は、セミコロンで区切ります。例えば:

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

上記の意味:ホストとパスのプレフィックスが一致する場合、Traefikはリクエストを関連するバックエンドにルーティングします(転送の前に指定されたパスのプレフィックスを取り除きます)。これは、ラベル内で定義されている場合でも機能します。

詳細は フロントエンドのドキュメント を参照してください。

14
Timo Reimann