はじめに

グローバルIPアドレスがひとつしかないサーバでも、apacheの名前ベースのバーチャルホストを利用することで、複数の違う名前のウェブサーバを運営することができます。

このページでは、apacheで名前ベースのバーチャルホストを構築する方法について説明します。

「httpd.conf」への追記

名前ベースのバーチャルホストを構築するには、下記の通り「httpd.conf」内に設定してやります。

「httpd.conf」の編集
Listen 192.168.0.2:80

NameVirtualHost 192.168.0.2:80

<VirtualHost 192.168.0.2:80>
	ServerName vhost1.kishiro.com
	ServerAdmin root@kishiro.com
	DocumentRoot "/home/www/content/vhost1/root_http"
	LogLevel warn
	ErrorLog /var/log/httpd-error.vhost1.log
	CustomLog /var/log/httpd-access.vhost1.log combined
</VirtualHost>

<VirtualHost 192.168.0.2:80>
	ServerName vhost2.kishiro.com
	ServerAdmin root@kishiro.com
	DocumentRoot "/home/www/content/vhost2/root_http"
	LogLevel warn
	ErrorLog /var/log/httpd-error.vhost2.log
	CustomLog /var/log/httpd-access.vhost2.log combined
</VirtualHost>

上記の例では、IPアドレス「192.168.0.2」のポート番号「80」に、2つの名前ベースのバーチャルホスト「vhost1.kishiro.com」および「vhost2.kishiro.com」を動作させます。

最初の「Listen 192.168.0.2:80」の部分は、apacheをIPアドレス「192.168.0.2」のポート番号「80」で動作させるための設定です。
「Listen」ディレクティブで動作させるIPアドレス/ポート番号を明示しない限り、後述するNameVirtualHostディレクティブ、VirtualHostセッションでIPアドレス/ポート番号を指定しても、apacheは動作しませんので注意してください。

名前ベースのバーチャルホストでもっとも重要な記述が、次の「NameVirtualHost 192.168.0.2:80」の部分になります。
この記述により、IPアドレス「192.168.0.2」のポート番号「80」にて、名前ベースのバーチャルホストを複数動作させることができるようになります。

続いての「<VirtualHost 192.168.0.2:80>」セクション内に、動作されるバーチャルホストの設定を記述していきます。
最低限必要なのは「ServerName」「ServerAdmin」「DocumentRoot」の3ディレクティブになります。

今までバーチャルホストを設定せずにapacheを運用していた場合には、グローバルセッションで設定していたメインサーバの設定をいったん削除し、その分の設定をVirualHostセッションの中に移すようにしてください。
Directoryディレクティブをはじめ、ほとんどの設定をVirualHostセッション内に記述することができます。

また、名前ベースのバーチャルホストでは、最初に記述したVirtualHostセッションが、デフォルトのバーチャルホストとして設定され、HOST指定のないHTTPリクエストを受けた場合にこのバーチャルホストが応答することになります。

上記の通り設定が完了したら、設定を反映させるためにapacheを再起動させます。
apacheの再起動方法については、「コマンドラインからapacheを起動/停止/再起動する」を参照してください。

動作確認

設定完了後、「apachectl restart」でapacheを再起動してください。

再起動後、下記のようにして設定が正しく反映されているか確認してください。

「telnet」による動作確認(vhost1のコンテンツが返ってくれば成功)
$ telnet 192.168.0.2 80

GET / HTTP/1.1
HOST: vhost1.kishiro.com

「telnet」による動作確認(vhost2のコンテンツが返ってくれば成功)
$ telnet 192.168.0.2 80

GET / HTTP/1.1
HOST: vhost2.kishiro.com

「telnet」による動作確認(vhost1のコンテンツが返ってくれば成功)
$ telnet 192.168.0.2 80

GET / HTTP/1.0


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


参考になった
6 (100%)

表示できるメッセージはありません。