Apacheのバーチャルホストの設定

Linuxでのウェブサーバ構築には、Apacheを使用するのですが、Debianのパッケージで提供されているApacheの場合、設定ファイルが少し特殊で、バーチャルホストの設定について知っていないと設定ファイルを作成することができません。また、SSLの設定についても知っていないと設定が難しいです。これらのファイルを作成するために「IPベース」や「NAMEベース」のバーチャルホストの設定をまとめて見ました。

スポンサーリンク




バーチャルホストとは

本来なら複数サーバを用意して、各サーバに個別のIPアドレスを割振り、各サーバで個別のサイトを運用するのが普通です。しかし、1台のサーバで複数のサイトを運用しようというのがバーチャルホストです。例えば、「http://www1.hoge.co.jp」と「http://www2.hoge.co.jp」でアクセスすると一方は、サーバAに他方は、サーバBにアクセスされます。しかし、バーチャルホストの設定を行うと両方ともサーバAにアクセスさせることができます。

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

1つのサーバに複数のネットワークカードを装着するか、「IP aliasing」を使って1つのネットーワークカードに複数のIPアドレスを割り当てるかして、サーバに対し複数のIPアドレスを設定します。この割り当てたIPアドレスごとに表示するサイトを設定する方法が、IPベースです。IPベースで設定する場合、「VirtualHostディレクティブ」を使用します。設定の主な内容は、次の通りです。

<VirtualHost IPアドレス>
	ServerName ホスト名
	DocumentRoot コンテンツディレクトリ
	ServerAdmin 管理者メールアドレス
	ErrorLog エラーログファイル名
	TransferLog アクセスログファイル名
</VirtualHost>

この内容に従い、設定するIPアドレス分だけ「VirtualHostディレクティブ」を追加します。例えば、「www1.hoge.co.jp」(192.168.0.1)と「www2.hoge.co.jp」(192.168.0.2)という設定をする場合、次のようになります。

<VirtualHost 192.186.0.1>
	ServerName www1.hoge.co.jp
	DocumentRoot /var/www/site1
	ServerAdmin webmaster@www1.hoge.co.jp
	ErrorLog /var/log/apache/site1_error.log
	TransferLog /var/log/apache/site1_access.log
</VirtualHost>
<VirtualHost 192.186.0.2>
	ServerName www2.hoge.co.jp
	DocumentRoot /var/www/site2
	ServerAdmin webmaster@www2.hoge.co.jp
	ErrorLog /var/log/apache/site2_error.log
	TransferLog /var/log/apache/site2_access.log
</VirtualHost>

NAMEベースのバーチャルホストの設定

1つのIPアドレスに対して複数のサイトを設定する方法がNAMEベースです。サイトの区別は、WEBブラウザがWEBサーバに向けて送ってくるホスト名で行います。NAMEベースで設定する場合、「VirtualHostディレクティブ」とともに、「NameVirtualHostディレクティブ」を使って、複数のホスト名で共有するIPアドレスを指定します。次の例では、IPアドレス:192.168.0.1に対し「www1.hoge.co.jp」と「www2.hoge.co.jp」を設定します。

NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
	ServerName www1.hoge.co.jp
	DocumentRoot /var/www/site1
	ServerAdmin webmaster@www1.hoge.co.jp
	ErrorLog /var/log/apache/site1_error.log
	TransferLog /var/log/apache/site1_access.log
</VirtualHost>
<VirtualHost 192.168.0.1>
	ServerName www2.hoge.co.jp
	DocumentRoot /var/www/site2
	ServerAdmin webmaster@www2.hoge.co.jp
	ErrorLog /var/log/apache/site2_error.log
	TransferLog /var/log/apache/site2_access.log
</VirtualHost>

IPベースとNAMEベースが混在する場合の設定

「IPベース」と「NAMEベース」と2種類あり、この2つの方式が、混在する場合の設定をまとめてみました。設定内容として次のような場合を想定しました。

設定するIPアドレス
192.168.0.1
192.168.0.2
設定するホスト名
www1.hoge.co.jp
www2.hoge.co.jp
www3.hoge.co.jp

ホスト名とIPアドレスの組合せは、次のように設定します。

ホスト名 設定するIPアドレス
www1.hoge.co.jp 192.168.0.1
www2.hoge.co.jp 192.168.0.2
www3.hoge.co.jp 192.168.0.2

以上を踏まえて設定ファイルを作成したいと思います。

<VirtualHost 192.186.0.1>
	ServerName www1.hoge.co.jp
	DocumentRoot /var/www/site1
	ServerAdmin webmaster@www1.hoge.co.jp
	ErrorLog /var/log/apache/site1_error.log
	TransferLog /var/log/apache/site1_access.log
</VirtualHost>
NameVirtualHost 192.168.0.2
<VirtualHost 192.168.0.2>
	ServerName www2.hoge.co.jp
	DocumentRoot /var/www/site2
	ServerAdmin webmaster@www2.hoge.co.jp
	ErrorLog /var/log/apache/site2_error.log
	TransferLog /var/log/apache/site2_access.log
</VirtualHost>
<VirtualHost 192.168.0.2>
	ServerName www3.hoge.co.jp 
	DocumentRoot /var/www/site3
	ServerAdmin webmaster@www3.hoge.co.jp
	ErrorLog /var/log/apache/site3_error.log
	TransferLog /var/log/apache/site3_access.log
</VirtualHost>

動作確認した環境は、Debian/etchでパッケージを使用してインストールしました。Apacheのバージョンは、2.2.3です。この設定で起動時にエラーもなく正常に起動しました。表示するページやログの出力も指定通りでうまく動いているようです。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする