/etc/httpd/conf/httpd.conf の末にバーチャルホストの設定例があります。ここでは設定は行なわず、 /etc/httpd/conf.d/ ディレクトリに新たにバーチャルホストの設定ファイルを作成することにしました。
conf.d 内にある.confファイルは、Apache起動時に、httpd.confの一部としてインクルードされます。優先順位は最期です。ここで管理する方が管理が行ない易いのでこのようにしています。
ファイル名は、末尾に .conf があればなんでも構いません。ここでは
/etc/httpd/conf.d/VirtualHost.conf
とします。以下はその内容です。<VirtualHost 192.168.***.***:80> タグ内に通常のディレクティブ設定を行なうことで、通常のhttpd.conf を編集することと同じになります。バーチャルホストの設定はこのファイルで行えば良い事になるので管理が分り易くなるのでこのようにしました。
# 以下はバーチャルホストを有効にする設定なので
# httpd.conf 側で指定して、ここでは指定しないというのもありです。
# * は複数のバーチャルホストを立ち上げるサーバーのIPアドレスを指定します。
# ワイルドカードで指定する亊で非固定IPに対応できます。(外部に公開する場合)
NameVirtualHost *:80
# 以下は現在公開中の通常のドキュメントルートです。
# 新たにVitualHostを公開する以上、こちらもVirtualHostとして扱います。
# 最低限の設定だけを指定します。ディレクティブに関しては
# 既存のhttpd.confに従います。
<VirtualHost *:80>
ServerName www.mydomain.net
DocumentRoot /var/www/html
ServerAdmin www@mydomain.net
</VirtualHost>
##### ここまでは共通項なので、httpd.conf に記載したほうが解り易いです。
### ここからが新たに立ち上げる バーチャルホストの基本的な設定です。
<VirtualHost *:80>
ServerName testserver
DocumentRoot /data01/www/html
ServerAdmin webmaster@mydomain.net
# ログファイルを別途指定できます。 指定しない場合は
# 通常のログファイルと同じファイルに書き出されます。
ErrorLog logs/testserver_error_log
TransferLog logs/testserver_access_log
# ScriptAlias もバーチャルホスト内で同様に処理します。
# つまり http://testserver/cgi-bin/ は以下のディレクトリを参照
# する亊になります。ドキュメントルート外の公開指定ですネ。
ScriptAlias /cgi-bin/ /data01/www/cgi-bin/
<Directory /data01/www/html/>
# 以下は基本的なディレクティブ設定です。自分にあったオプションを指定
# して下さい。
Options FollowSymLinks ExecCGI +Includes
AllowOverride AuthConfig
# 以下はアクセスの評価基準とアクセス許可アドレスです。
Order deny,allow
Deny from all
Allow from 192.168.2.54 192.168.2.55
</Directory>
</VirtualHost>
新たにバーチャルホストを指定する場合、通常のhttp://www.mydomain.net に対してもバーチャルドメイン <VirtualHost *:80>~</VirtualHost> として設定する必要があります。
参照 => Apache 2.0 ドキュメント 名前ベースのバーチャルホスト
ServerName testserver
DocumentRoot /data01/www/html
http://testserver でアクセスがあった場合は、/data01/www/htmlをドキュメントルートとしてApache が返します。
新たに構築したバーチャルホスト http://testserver の個々のディレクティブ管理は、 <VirtualHost *:80> ~ </VirtualHost> タグ内で自由に指定を行う事が出来ます。これまでの httpd.conf に対して行ってきた通りです。
これにより全く異なるドキュメントルートを別のドメインネームで運営することが出来ます。 これが名前ベースのバーチャルホストです。新たに、名前ベースのバーチャルホストを追加する場合、DNSの名前解決 さえ行えば、<VirtualHost *:80> ~ </VirtualHost> を追加するだけで、複数のドメインを持つそれぞれのサーバーを1台のサーバーで運営することが出来ます。また、DynamicDNSなど、外部のDNSサービスを利用することも可能です。
共用型であるホスティングサービスは、これらのバーチャルドメインにより、一つのWebサーバーで複数のドメインが運営されています。