TOP

VirtualHost

やりたいこと

一つのhttp(Apache)サーバーで、複数のサイトを運営したい。
今回の例では、以下二つのドメインを受け付けます。
www.grot3.com
www.vertual-grot3.com

VirtualHostの設定

# vi httpd.conf


-- リクエストに対し、値にマッチするかチェックします。
-- その後、それぞれのVertualHostセクションを確認します。
-- サーバーのIPアドレスが192.168.1.1 でポートが80番の場合以下記述でOK。
   NameVirtualHost 192.168.1.1:80
-- IPアドレスを特定する必要がなければ、以下でもOK。
   NameVirtualHost *:80

-- VertualHostセクション
-- 必要な内容を記述します。
   <VirtualHost *:80>
	-- www.grot3.comを受け付けます
	ServerName www.grot3.com
	-- 以下、個別設定のディレクティブです
	DocumentRoot /www/docs/www.grot3.com
	LogLevel warn
	ErrorLog logs/grot3.com-error_log
	CustomLog logs/grot3.com-access_log common
	ServerAdmin webmaster@grot3.com
   </VirtualHost>

   <VirtualHost *:80>
	-- www.virtual-grot3.comを受け付けます
	ServerName www.virtual-grot3.com
	DocumentRoot /www/docs/www.virtual-grot3.com
	ErrorLog logs/virtual-grot3.com-error_log
	CustomLog logs/virtual-grot3.com-access_log common
	ServerAdmin webmaster@grot3.com
   </VirtualHost>


-- VirtualHostが正しく設定されているか確認する
# httpd -S

-- DocumentRootが未作成の場合、こんなメッセージが出ます。
Warning: DocumentRoot [/www/docs/www.virtual-grot3.com] does not exist

-- 記述に問題がないと、以下のようなメッセージがでます
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server www.grot3.com (/etc/httpd/conf/httpd.conf:1013)	# どのVirtualHostにも一致しなかった場合(デフォルト)
         port 80 namevhost www.grot3.com (/etc/httpd/conf/httpd.conf:1013)		# 一つ目のVirtualHost
         port 80 namevhost www.virtual-grot3.com (/etc/httpd/conf/httpd.conf:1022)	# 二つ目のVirtualHost
Syntax OK
メモ:
アクセスにきたドメイン名が、設定したどのVirtualHostにも一致しなかった場合、
一番上に書いたVirtualHostセクションが使用されます。

予測不能なアクセスを防ぐため、
そのため、一番上にダミーですべてを拒否するVirtualHostを設定するのが良いでしょう。
その上で、せっかく来たアクセス(客)を逃したくないのであれば、403エラー用のファイルを作るなど、工夫してください。





TOPへ