CloudFrontで作るリバースプロキシ

4月 10, 2020AWS,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
   

参考資料