Apacheには1台サーバーで複数のWebサイトを公開するための仮想ホスト(バーチャルホスト)という機能があります。

仮想ホスト機能により、複数のURLを使って、1台のサーバーで同一あるいはそれぞれ別の公開ディレクトリへアクセスさせることができます。

仮想ホスト機能

1台のサーバー上でインターネットに複数のサイトを公開する、あるいは、開発環境で複数の案件のアプリケーションを同一サーバーに設置したい場合など、使い方は様々でたいへん便利な機能です。

1台のサーバーで複数のWebサイトを公開する

仮想ホストは1台のサーバーを複数のサーバーであるかのように見せる機能です。複数のサーバーに見せるための手段として以下2つの方法があります。

  • 名前ベースの仮想ホスト
  • IPアドレスベースの仮想ホスト

通常はWebサーバーを運用するのにドメインの数以上のサーバーが必要となりますが、上記方法を使えば、1台のサーバーで複数のWebサイトを運用することができ、サーバーの数を減らし運用のコストを下げられるなどのメリットがあります。

では、それぞれの仕組みについて順に見ていきましょう。

名前ベースの仮想ホスト

名前ベースバーチャルホストは、利用するドメイン名すべてに同じIPアドレスを使用します。
WebブラウザはWebサイトへアクセスする際、アクセス先のホスト名をリクエストヘッダー内のHostフィールドに指定することが必須とされています。ApacheはHostフィールドを参照し、アクセス先のホストを識別します。

名前ベースの仮想ホストは、1つのサーバーに必要なIPアドレスが1つで済み、複数の異なるURLでアクセスできる構成を、比較的容易に設定できます。

IPベースの仮想ホスト

IPベースの仮想ホストは、利用するドメイン名ごとにIPアドレスを用意し、1つのサーバーに複数のIPアドレスを割り当て、IPアドレスごとに仮想ホストを設定する方法です。

クライアントが接続したいドメインごとに異なるIPアドレスへ接続してくるため、Apacheは接続先IPアドレスを見てアクセス先のホストを識別します。

汎用性の高い方法ですが、一般的にIPアドレスの取得は高コストであり、比較的敷居が高い方法です。

ただ、接続先ホストを識別するための識別子はIPアドレスだけではありません。IPアドレスに加えてポート番号も含めて識別できます。
そのため、IPアドレスは同じにし、ポート番号だけでリクエストを振り分けて表示するサイトを切り替えることもできます。この方法を上記2つの方法と区別して、ポートベースの仮想ホストと呼ばれることもあります。

ポートベースの仮想ホスト

ドメインもしくはIPアドレスを複数取得する必要がないこの方法が最も容易に仮想ホストを構成できます。

次回はそのポートベースの仮想ホストの設定方法について見ていきます。