サイトアイコン puti se blog

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

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

環境・前提条件

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

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

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

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

例えば、

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

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

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

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

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

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

今回の検証環境では

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

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

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

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

ことが確認できました。

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

モバイルバージョンを終了