前回我々はゲートウェイの基本的な構築方法や要求がフィルタリングされ、APIを導入した記事、小さなパートナーZuulの役割はすでに基本的な理解を持っている必要がありますが、我々だけの簡単な紹介をしたコンフィギュレーションをルーティングするために、我々はこの記事に来ますルーティング構成のその他の詳細のいくつかを見てみましょう。
まず、私たち、設定するコードの私たちは二行の最後の記事では、ルールをルーティングすることを思い出してみましょう:
- zuul.routes.api-a.path=/api-a/**
- zuul.routes.api-a.serviceId=feign-consumer
私たちは、2行のコードの小さなトラブルは、次のように、我々は、代わりに次のコード行を使用することができ上がる私はアドレスの一致/ API-/ **ルールを訪問したときに、自動的に装う - 消費者サービスに配置されることを言うが、:
- zuul.routes.feign-consumer=/api-a/**
zuul.routes後ろに続くサービス名に続いて、サービス名は、ルールの背後にパスですが、この構成は明らかに簡単です。
我々は何も書かないマッピングがルールならば、システムは、デフォルトのコンフィギュレーション・ルールのセットを提供してくれ、デフォルトの設定のルールは次の通りです:
- zuul.routes.feign-consumer.path=/feign-consumer/**
- zuul.routes.feign-consumer.serviceId=feign-consumer
デフォルトでは、すべての登録されたサービスは、ルーティングのためのユーレカZuulマッピング関係に作成されますが、ここで私の例のために、私はサービスを提供する場合にのみ消費者サービスのためのサービス・プロバイダーとして装う - 消費者、ハローサービスにありますデフォルトでは、ルールをルーティングする場合は、サービスを提供するために、サービスを提供していない、Zuulが自動的ハローサービスのためのマッピングルールを作成しますが、今回はZuulを作成するには、ハロー・サービスのサービスをしませスキップ作るために以下の方法を使用することができますルールをルーティング:
- zuul.ignored-services=hello-service
いくつかのジュニアパートナーが疑問であってもよく、我々はルーティングルール/ API-/ **いつ、なぜ、最終的な表面が可能、2 *で定義しますか?確かに、しかし重要性は同じにすることはできません、ルートマッチングはZuulは、三つの異なるワイルドカードの合計をAntのスタイル定義を使用するルール:
ワイルドカード | 意味 | 例えば | 説明 |
---|---|---|---|
? | 任意の1文字に一致します | /装う-消費者/? | 匹配/装う消費者/、/装う消費者/ B、/装う消費者/ C等 |
* | 任意の数の文字にマッチします | /装う - 消費者/ * | 一致/装う消費者/ AAA、装う消費者/ BBB等/ふりコンシューマ/ CCC、一致させることができない/ふりコンシューマ/ A / B / C |
** | 任意の数の文字にマッチします | /装う - 消費者/ * | マッチ/装う - 消費者/ AAA、/装う - 消費者/ CCC、また一致させることができます/装う、消費者/ A / B / Cのような |
時々、私たちはこのような問題が発生します、例えば、私はまた装う - 消費者のhelloと呼ばれる装う - 消費者と呼ばれる2つのサービスを、持っている、この時私は、構成規則のルーティングは、次のように書くことができます。
- zuul.routes.feign-consumer.path=/feign-consumer/**
- zuul.routes.feign-consumer.serviceId=feign-consumer
-
- zuul.routes.feign-consumer-hello.path=/feign-consumer/hello/**
- zuul.routes.feign-consumer-hello.serviceId=feign-consumer-hello
この時点で私のパスアクセス装う - 消費者のhelloの試合はまた、我々は、単に確認する必要がありますので、パスは、順番にマッチングルールをルーティング格納されている順序と一致リニアウェイの試合で途中Zuulと一致するように、2つのルールをされます装う - 消費者ハローマッチングルールのマッチングを定義することです装う、消費者が後で定義できるルールが、プロパティファイルには、我々は順序を保証することはできませんし、我々は、YAMLコンフィギュレーションを使用する必要があり、我々は削除することができ、この時間リソースフォルダの下application.propertiesは、その後、新しいapplication.ymlを作成し、次のように読み取ります。
- spring:
- application:
- name: api-gateway
- server:
- port: 2006
- zuul:
- routes:
- feign-consumer-hello:
- path: /feign-consumer/hello/**
- serviceId: feign-consumer-hello
- feign-consumer:
- path: /feign-consumer/**
- serviceId: feign-consumer
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:1111/eureka/
我々はなります。この時間は必ず一致規則が装う - 消費者こんにちは、とのマッチングをロードした後にロード装う - 消費者を支配します。
私たちは、ハロー・サービス属性は、サービスを無視することができるサービスマッピングルールを設定していない、我々はさらに、この設定を調整することができ、例えば、私は/ハロールートをインターフェイスにしたくない、ということ= zuul.ignored-サービス上で述べました次のように我々は(私はバックYAML設定を使用)を設定できます。
- zuul:
- ignored-patterns: /**/hello/**
この訪問で/ハローインターフェイスは、404エラーを報告し、我々はまた、次のログスプーリングを見ることができます:
また、我々はまた、次のように設定し、ルールをルーティング統一プレフィックスを増やすことができます。
- zuul:
- prefix: /myapi
この時点で、我々のアクセスパスでなります。http:// localhostを:2006 / myapi /装う - 消費者/ hello1。
唯一の統一されたAPI Gatewayのポータルシステムとしての通常の状況下で、時には我々はAPI Gatewayのビジネスロジック演算のビットを行う必要があり、例えば、私は今、新しいコントローラを作成し、APIゲートウェイプロジェクトを、次のとおりです。
- @RestController
- public class HelloController {
- @RequestMapping("/local")
- public String hello() {
- return "hello api gateway";
- }
- }
-
:次のように私たちは地元のジャンプZuulを使用する必要があり、この時間は、コンフィギュレーションがあるので、私は、ユーザーがローカルの/アクセスする際に自動的にこの方法に対処するためにジャンプアップすることができるようにしたいです
- zuul:
- prefix: /myapi
- ignored-patterns: /**/hello/**
- routes:
- local:
- path: /local/**
- url: forward:/local
今回の訪問でhttp:// localhostを:2006 / myapi /ローカル結果として、以下のとおりです。
私たちはnginxのを使用する場合は、上流のサーバーアップにジャンプするページのリダイレクトを防ぐために、構成ヘッダ情報要求を含んで、問題がZuulに同じですが、インターフェースを提供/ hello4はでI装う - 消費者を想定ハロー/へのアクセス/ hello4インタフェース、ページのリダイレクト、デフォルトでは、リダイレクトアドレスは、特定のサービスインスタンスのアドレスではなく、ジャンプアドレスAPIゲートウェイで、このアプローチは、実際のサービスアドレスを公開次のように、あなたがZuulを設定する必要がありますので、設定は、非常に簡単です:
- zuul:
- add-host-header: true
これは、転送経路の前にリクエストヘッダ情報設定要求を行うホストAPIゲートウェイを表します。
デフォルトでは、機密情報の頭部がAPIゲートウェイを通過することができない、我々はそれには、以下の構成を通過することができていること:
- zuul:
- routes:
- feign-consumer:
- sensitiveHeaders:
:Zuulでは、リボンとHystrix設定が以前の設定と一致している、私たちはHystrixの再試行メカニズムを閉じたい場合は、以下のように、することができ、詳細には触れません。
閉じるグローバル再試行メカニズム:
- zuul:
- retryable: false
特定のサービスのために閉じる再試行メカニズム:
- zuul:
- routes:
- feign-consumer:
- retryable: false
ルーティング構成について、我々はここで停止Zuulを詳述し、問題の歓迎の議論があります。この記事のためにすべてのことだ、私は学ぶために役立つことがしたい、私はあなたがプログラミングのヒントをサポートすることを願っています。