AWS ALBでホストベースはVirtualHost(vhost)と同じか検証。httpリクエストの確認検証方法

ApacheにはVirtualHost(バーチャルホスト)というホストベースの設定があります。
これは、httpリクエストの、hostヘッダーを読み取って、httpレスポンスを返すという仕組みです。
AWSのALBのHostベースの設定もvhostと同じ仕組みかどうか確認しました。

環境・前提条件

  • サーバーとしてAWSのALB(Application Load Balancer)
  • クライアントとしてWindows Server 2016 EC2

を使用し、確認しました。

結論、httpリクエストのHostヘッダーを使用した検証方法にはhostsでのテストが有効

vhostをhttリクエストで簡単に挙動確認をするにはクライアントのhostsファイルを使用すると簡単にテストできます。以下のような、クライアント環境を用意します。

hostヘッダーを簡単に変えるには、hostファイルに適当な設定折れれば
ブラウザが勝手にhostヘッダーを入力してサーバーに送ってくれます。

例えば、

まずサーバーとしてアクセスするALBのIPアドレスを確認

image

まずは、アクセスするつもりのALBのIPアドレスを調べます。
これは、クライアントからnslookupでALBのFQDN名を検索することで、その時のIPアドレスがわかります。

次にhostsファイルに適当なhost名とALBのIPアドレスを設定

image

次に、クライアントのhostsファイルに、調べたALBのIPアドレスと適当なFQDNを記載します。
今回は、

  • aaa.bbb.ccc = 13.230.143.194 (ALB IPアドレス)
  • ddd.eee.fff = 13.230.143.194 (ALB IPアドレス)

完全にあり得ないhost名(FQDN)ですが、これで名前解決ができます。

ALBの設定。hostベースでリダイレクトする設定をする

image

今回の検証環境では

  1. hostヘッダーがddd.eee.fffが来たら、80ポートのhttpアクセスを、yahooにhttpsアクセスでリダイレクトする
  2. hostヘッダーがaaa.bbb.cccが来たら、80ポートのhttpアクセスを、googleにhttpsアクセスでリダイレクトする
  3. それ以外のhostヘッダーの場合は、httpレスポンスコード403を返す

という設定を入れてみました。

クライアントのブラウザでhost名URLアクセスしてみる

image

クライアントから、ブラウザでアクセスしてみて確認したところ

  • 「http://aaa.bbb.ccc」へアクセスすればgoogleにリダイレクトされ
  • 「http://ddd.eee.fff」へアクセスすればyahooにリダイレクトされ
  • 正規のALBのURLでアクセスしたところ、httpレスポンスコード403を返す

ことが確認できました。

ALBは、ちゃんとhttpリクエストのhostヘッダーを確認していることと
ALBはリダイレクトだけでなく、固定のhttpレスポンスコートを返信することが確認できました。
Apacheのvhostと同じようにALBも動いてくれますね。

コメントを残す

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