AWSは、ディレクトリパスに基づいてHTTPSトラフィックを2つの異なるEC2インスタンスにルーティングする方法を提供していますか?


10

AWSオファリングで次のことが可能かどうか疑問に思っていましたか?

https://www.example.com/a/-> EC2インスタンスAの Apacheによって提供されます

https://www.example.com/b/-> EC2インスタンスBの Apacheによって提供されます

明確にするために、1つのディレクトリパスの下にあるファイルを、他のディレクトリパスの下にあるファイルと同じサーバーインスタンスに配置したくありません。

これはある種のプロキシで可能かもしれないことを理解していますが、AWS製品の1つでより簡単なソリューションがあります。

EC2のロードバランサは、ディレクトリ・パスに基づいて切り替えることができていないようです。Route 53はDNSレベルで機能します。DNSレベルには、それに基づいてIPを返すためのパス情報がありません。


EC2ロードバランサーは非常に愚かで、Host:ヘッダーを読み取らず、偽のトラフィックを除外しません。彼らがあなたがヘッダーを見ることが彼らにとってあまりにも多くの仕事であるかどうかあなたが求めているようなどんな機能も追加する可能性は低いようです。幸いにも彼らは他のオプションを持っています。
ヒヨコ

回答:


29

パスベースのルーティングを行うAWS Application Load Balancerを使用します。その2番目のリンクは、その方法のチュートリアルです。

簡単に言うと、ALBを通常どおりセットアップし、次の手順に従います(AWSチュートリアルからコピー)。

  • 上のリスナータブ、リスナーのためのルールを表示するには、矢印を使用して、選択した追加ルールを。ルールを次のように指定します。

  • [ ターゲットグループ名]で、作成した2番目のターゲットグループを選択します。

  • [ パスパターン]には、パスベースのルーティングに使用する正確なパターンを指定します(たとえば、/ img / *)。詳細については、「リスナールール」を参照してください。

  • 保存を選択します


ありがとう!最初にEC2 Application Load Balancerをチェックアウトし、ウィザードを実行しましたが、実際に作成したことはありません。ウィザードはパスオプションを提供しませんでした。チュートリアルが指摘したように、最初にそれを作成し、次にルールを編集する必要があります。
ジョセフShih

9

Timの優れた答えに加えて、CloudFrontでもこれを実現できます。

まず、ディストリビューションを作成し、 EC2インスタンスAとEC2インスタンスB(ロードバランサー、非AWSホスト、またはS3バケットの場合もある)のオリジンを追加します

次に、キャッシュ動作ルールを設定して、/ a / *および/ b / *を適切なオリジンにマップします。

この目的でCloudFrontを使用することが理にかなっているかどうかは、アプリケーションとCDNの必要性によって異なります。


4
これは、あなたが望んだ場合にも適用できる/a*/b*異なるサービス、異なるアカウント、異なる地域、またはAWSおよびその他の他の場所内で実行している何かが取り扱う一つでもパスで処理します。CloudFrontには、概念的にCDNをまったく必要としない多くのユースケースがあります。
マイケル-sqlbot 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.