ApacheのVirtualHostとは?初心者向けに簡単解説!

Web開発
この記事は約7分で読めます。

こんにちは、@Manabu です。

Manabu
Manabu

1台のサーバーで複数のサイトを管理できたらな〜

こんなことを考えていると、バーチャルホストという用語に出会いました。

今回は、複数のサイトを同一サーバーで管理することができる、バーチャルホストについて調べ、実際に使ってみた経験から、どんなものか解説していきたいと思います。

この記事は、以下のような方におすすめです。

・バーチャルホストって何?
・1台のサーバーで複数サイトをホストしたい

ぜひ参考にして下さい。

Apacheとは?

Apache HTTP Server(通称、Apache)は、最も広く使用されているオープンソースのウェブサーバーソフトウェアです。1995年にリリースされ、その後も持続的に開発が続けられています。

Apacheは、世界中の多くのウェブサイトやウェブアプリケーションで使用され、その柔軟性と安定性の高さで知られています。

モジュール式の構造を持ち、さまざまな拡張機能をサポートしているため、静的なウェブページだけでなく、動的なコンテンツも処理できます。これにより、さまざまなニーズに合わせたカスタマイズや設定が可能です。

バーチャルホストとは?

バーチャルホストは、一つの物理サーバー上で複数のウェブサイトやアプリケーションをホストする仕組みです。通常、複数のドメイン名を同じIPアドレスに割り当てることで実現されます。

Apacheでは、バーチャルホストを設定することで、複数のウェブサイトを同じサーバー上で独立して運用することができます。これにより、異なるドメイン名や異なるポート番号を使用して、それぞれのウェブサイトに異なる設定やコンテンツを提供することが可能となります。

なぜバーチャルホストが重要なのか?

バーチャルホストは、効率的で柔軟なウェブホスティングを実現するために重要です。

以下のようなメリットがあります。

・リソースの最適利用
・コスト削減
・柔軟性

1台のサーバーで複数のウェブサイトをホストすることで、ハードウェアリソースを最適に活用できます。また、複数のサイトを1つのサーバーで運営できるため、ハードウェアおよび管理コストを削減できます。

さらに、同じサーバー上で異なるドメインやアプリケーションを運営でき、それらを独立して管理できるため、柔軟性が向上します。

バーチャルホストの理解と活用は、ウェブサーバーの管理者やウェブ開発者にとって非常に重要であり、効果的なウェブホスティングを実現するための基本的な概念となっています。

バーチャルホストの種類

Apacheのバーチャルホストには、主に名前ベースIPベースの2つの種類があります。

一般的にApacheの設定ファイルは httpd.conf もしくは apache2.conf と呼ばれます。設定ファイルの場所はOSによって異なります。バーチャルホストの設定を対象ファイルに追加することで、動かすことができます。

名前ベースのバーチャルホスト

名前ベースのヴァーチャルホストは、ドメイン名(ホスト名)に基づいて複数のウェブサイトを区別します。同じIPアドレスとポート番号を共有しつつ、リクエストされるホスト名によって異なるウェブサイトを提供します。

⚪︎メリット

リソースの効率化:一つのIPアドレスで複数のウェブサイトをホストできるため、IPアドレスの節約になります。
・コスト削減:追加のIPアドレスを購入する必要がないため、コストが削減されます。

⚪︎デメリット

SSL証明書の管理が複雑:同じポートで複数のSSLサイトを運営する場合、SNI(Server Name Indication)に対応している必要があります。

下記のように、<VirtualHost> ブロックを使用して名前ベースのバーチャルホストを設定します。

<VirtualHost *:80>
 ServerAdmin webmaster@yourdomain.com
 ServerName yourdomain.com
 DocumentRoot /var/www/html/yourdomain
</VirtualHost>
<VirtualHost *:80>
 ServerAdmin webmaster@anotherdomain.com
 ServerName anotherdomain.com
 DocumentRoot /var/www/html/anotherdomain
</VirtualHost>

設定を保存し、Apacheを再起動して変更を反映させます。

sudo service apache2 restart # Ubuntu/Debian
sudo systemctl restart apache2 # CentOS/RHEL

この設定では、HTTPリクエストがサーバーに届いた際、それぞれのドメインに基づいて異なるウェブサイトが提供されます。

例えば、ユーザーがブラウザで http://yourdomain.com にアクセスした場合、/var/www/html/yourdomain のコンテンツが表示され、同様に http://anotherdomain.com にアクセスした場合は、/var/www/html/anotherdomain のコンテンツが表示されます。

IPベースのバーチャルホスト

IPベースのヴァーチャルホストは、異なるIPアドレスに基づいて複数のウェブサイトを区別します。同じサーバーに複数のIPアドレスを設定し、リクエストされるIPアドレスによって異なるウェブサイトを提供します。

⚪︎メリット

独立したSSL証明書の利用:各サイトが独自のIPアドレスを持つため、SSL証明書の設定が簡単です。
分離されたサイト管理:サイトごとにIPアドレスが異なるため、より分離された管理が可能です。

⚪︎デメリット

IPアドレスの消費:複数のIPアドレスが必要なため、IPアドレスの節約にはなりません。
コスト増加:追加のIPアドレスを取得する必要があるため、コストが増加する可能性があります。

下記のように、<VirtualHost> ブロック内にIPアドレスを指定して設定します。

<VirtualHost 192.168.1.2:80>
 ServerAdmin webmaster@yourdomain.com
 ServerName yourdomain.com
 DocumentRoot /var/www/html/yourdomain
</VirtualHost>
<VirtualHost 192.168.1.3:80>
 ServerAdmin webmaster@anotherdomain.com
 ServerName anotherdomain.com
 DocumentRoot /var/www/html/anotherdomain
</VirtualHost>

設定を保存し、Apacheを再起動して変更を反映させます。

この設定では、各IPアドレスごとに異なるウェブサイトが提供されます。

例えば、ユーザーがブラウザで http://192.168.1.2 にアクセスした場合、/var/www/html/yourdomain のコンテンツが表示され、同様に http://192.168.1.3 にアクセスした場合は、/var/www/html/anotherdomain のコンテンツが表示されます。

この設定は特に異なるIPアドレスを持つ複数のネットワークインターフェースがある場合や、仮想ホストとしてサーバーを構成する場合などに利用されます。各バーチャルホストが異なるIPアドレスにバインドされているため、同じポート(80)を共有しながらも異なるウェブサイトを提供することができます。

備考

これらの設定において、ServerName はバーチャルホストのドメインを指定し、DocumentRoot は対応するウェブサイトのルートディレクトリを指定します。

設定を変更した後には、Apacheを再起動して変更を有効にしてください。

最後に

これらの設定を組み合わせることで、1つのサーバー上で複数のウェブサイトを独立して運営できます。バーチャルホストの設定は、効率的なリソース利用コスト削減柔軟性の向上など多くの利点をもたらします。

ウェブサイトの規模や要件に合わせて適切なバーチャルホストの方法を選択し、Apacheを効果的に活用しましょう。