2017-07-07 7 views
4

私はTraefikを使用して、Consulに登録されているさまざまなサービス間で負荷分散を行っています。Traefik Consulの統合における複数のフロントエンドルール

私はconsul-catalog構成を使用し、領事にサービスを定義するときにタグを追加することにより、サービスのいずれかのためのフロントエンドのルーティングルールをオーバーライドしています:私は/apiapi.service.consulの両方を期待してい

tags=[“traefik.frontend.rule=PathPrefixStrip:/api,Host:api.service.consul”] 

を私のサービスに解決しますが、/apiだけが成功しますが、api.service.consulは404エラーを返します。

つまり、最初のルールのみが考慮されています。私は周りにタグを切り替える場合:

tags=[“traefik.frontend.rule=Host:api.service.consul,PathPrefixStrip:/api”] 

はその後api.servie.consul解決し/apiは404エラーを返します。

ドキュメントでは、この設定がサポートされていると考えています。コンスルタグを使って複数のルールを定義することに成功した人は誰ですか?

+0

あなたはここに 'AND'または' OR'操作を探していますか? –

答えて

4

答えはhttps://github.com/containous/traefik/issues/2417で見ることができます。

  • ,は、OR演算子
  • ;では、SOおよびオペレータ

、あなたの例のために、使用することである:

tags=["traefik.frontend.rule=Host:api.service.consul;PathPrefixStrip:/api"]

ドキュメントへのリンク:

+1

@Idez最初の文は、これがTraefikのv1.3とは異なることを意味すると解釈することができます。これは[ドキュメント](// docs.traefik.io/v1.3/basics/#matchers)からわかるように間違っています。そのバージョンから多くの変更があったことが本当であっても、その文は回答の質問とは無関係であり、削除する必要があります。 PS。コメントを投稿するときに '@ reply'を使うことを忘れないでください。そうすれば、ターゲットユーザーに通知されます。詳細については、[@repliesはどのようにコメントするのですか?](// meta.stackexchange.com/q/43019)を参照してください。 – robinCTS

+0

これは、* 'Host:api.service.consul'と' PathPrefixStrip:/ api'の両方を持つものと一致します。問題は、*どちらかが真であれば一致します( 'http:// api.service.consul/test/hello'と' http:// some.other.host/api/test/hello'がマッチします)。 – Chris

関連する問題