CloudFrontで作るリバースプロキシ
概要
- 今回はCloudFrontを応用したリバースプロキシの構築方法を紹介します。CloudFrontに複数のオリジンを設定し、パスパターンに応じてリクエストをオリジンに転送する方法となります。
- リバースプロキシとは、クライアントとサーバーを仲介するプロキシサーバーであり、負荷分散や異なるWebサイトを1つに統合する用途で使用します。リバースプロキシの説明は、@IT の記事をご覧ください。
CloudFrontを使ったリバースプロキシ構築
- 先ずCloudFront のコンソールを開きます。
- 下記の記事を参考に、CloudFrontにディストリビューションを作成し、ディストリビューションに代替ドメイン名(CNAME)を設定します。
- CloudFront のディストリビューション選択し、[Origins and Origin Groups]タブを開きます。既に設定済みのオリジンが表示されていることを確認し、2つ目のオリジンを設定するため、[Create Origin]を押します。
- 1つ目に設定したオリジンと同じように、2つ目のオリジンを設定します。オリジン設定の詳細は、こちらの記事を参照ください。
- 以下の通り、2つ目のオリジンが追加され、一覧に2つのELB が表示されています。
- 次に、Behaviorsタブを開きます。初期は、Default (*)のPath Pattern(パスパターン)が設定されていますので、今回は下記のパスパターンを追加する設定を行います。
- Path Pattern: test1/* → Origin: ELB-niikawa-test-nlb1-xxxxxxxxxxxxxxxx.elb.ap-northeast-1.amazonaws.com
- Path Pattern: test2/* → Origin: ELB-niikawa-test-nlb2-yyyyyyyyyyyyyyyy.elb.ap-northeast-1.amazonaws.com
- [Create Behavior]を押して、Path Patternを入力し、Origin or Origin Groupを選択します。
- 以下のパスパターンが設定されました。必要に応じて、Precedence(優先順位)を指定します。
CloudFrontリバースプロキシの動作確認
- クライアントより、CloudFront のドメイン名にパスを指定してリクエストを投げます。
- なお、オリジン側Webサーバーのパス構成は、CloudFront のBehaviorsに設定したPath Patternと一致させる必要があります。例えば、WebサーバーのDocumentRootが “/var/www/html" であれば、Webサーバーのコンテンツは"/var/www/html/test1″、"/var/www/html/test2″ に配置されています。
- 以下の通り、curlコマンドでリクエストを投げた結果、各パスパターンに応じたレスポンスが返りました。
niikawa@niikawa1:~$ curl https://niikawa-test.example.com/test1/
backend web1
niikawa@niikawa1:~$ curl https://niikawa-test.example.com/test2/
backend web2