Zuulを使ってProxyを作成する。

今回は、Zuul を用いて proxyサーバーを作成します。

Zuul 

Zuulとは、Netflix OSS  で提供されている機能の一つで、あるサーバーへのproxy機能を提供します。

Zuulはマイクロサービスアーキテクチャにおいて、実際にマイクロサービスにアクセスする前の認証/認可等のフィルタリングによく使われます。

では、実際に作成し、サンプルコードを追って説明していきます。
(本記事のコードはgithubに置いてあります。)

 

1. pom.xmlに必要な依存関係を追加する。

SpringBootでは、ZuulSpringCloudの機能の一つとして提供されています。なので、SpringCloud系のライブラリを依存関係に追加します。

まずは、dependencyManagement に、依存関係の定義を記述します。

次に、dependenciesに、依存関係を追加します。

以上で依存関係の記述は完了しました。

 

2.Zuulを有効にし、設定を記述する。

まずは、アプリケーションでZuulの設定を有効にします。

次に、 Zuulproxy設定を記述します。application.propertiesに以下の設定を記述してみましょう。

  1. ①でproxy先のurlを指定しています。形式は zuul.routes.{proxyサービス名}.url=xxxx です。
  2. ②で、proxyする際のrequestPathを指定します。例えば上の場合、 http://localhost:8888/v1/proxy/spring/ へのアクセスは、http://spring-boot-reference.jp へリダイレクトされます。
  3. ③では、 sensitiveHeaders の設定を記述します。 AuthorizationCookie 等の外部に渡すと危険のあるheader情報は、defaultでproxy時に渡されないようになっています。上の設定では、sensitiveHeaders を何も指定しないため、アプリケーションに送られてきたリクエスト中の全てのheaderをproxy先に渡します。

 

以上でZuulのアプリケーションの設定は終了です。

実際にアプリケーションを起動する前に、フィルタリング部分の実装を紹介します。

 

3.HttpRequestをフィルタリングする

アプリケーションに来たHttpRequestをフィルタリングする機能を実装します。

以上のようにして、リクエストをフィルタリングします。

では、実際にアプリケーションを起動します。

4. アプリケーションを起動する。

実際にアプリケーションを起動した後、proxyされていることを確認します。以下のリクエストを飛ばしてみます。

statusCode 401 が返却されました。Prefilter クラスのフィルタリングが有効になっていることが確認できました。

 

次に、認証に成功するリクエストを実行します。

無事、認証に成功し、proxyが有効にってWebサイトの情報が取得できました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です