apache の virtual host

簡単に

  • virtual host とは1つの物理的なホストで複数のWebサーバエントリを扱う手法.
  • IPベースと名前ベースがあり,名前ベースは UA が送出する http の host: ヘッダを利用する手法.
  • 以下,名前ベース virtual host の設定.
  • まず NameVirtualHost ディレクティブで,どの (IP アドレス, ポート番号) を virtual host の対象にするかを設定する.
  • 次に <VirtualHost> ディレクティブに,NameVirtualHost で指定した組と同じものを記述し, 中の ServerName ディレクティブで設定の対象としたいホスト名を記述する.
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
  • apache の挙動: リクエストが来ると、サーバはまず最初に にマッチする IP アドレスかどうかをチェック.マッチすれば,マッチした IP アドレスの のそれぞれのセクションの中から,ServerName か ServerAlias に要求されたホスト名があるか探す.見つかればそのサーバ用の設定を使う.マッチするバーチャルホストが見つからなければ,マッチした IP アドレスのリストの最初にあるバーチャルホストが使われる.