このページでは、Apache HTTP Server における VirtualHost の基本的な仕組みと設定方法を整理する。VirtualHost は、1 台の Web サーバーで複数の Web サイトを公開するための機能であり、Apache が受け取った HTTP リクエストをホスト名ごとに振り分けることで実現される。これにより、同じ IP アドレスの Web サーバーであっても、異なるドメイン名の Web サイトを個別に公開することが可能になる。
Apache をインストールした直後は、通常 1 つの DocumentRoot に対してのみ応答する単純な構成になっている。VirtualHost を設定することで、同じ Web サーバー上で複数の Web サイトを分けて公開できるようになり、1 台のサーバーで複数の Web サイトを運用することが可能になる。
本ページでは次の流れで VirtualHost を構築する。
・公開ディレクトリ作成
・VirtualHost 設定ファイル作成
・Apache 設定確認
・サービス再起動
・HTTP 応答確認
VirtualHost は Apache HTTP Server が受け取った HTTP / HTTPS リクエストを
ホスト名ごとに振り分ける仕組みである。
例えば次のような構成を 1 台の Web サーバーで実現できる。
・site-a.example.local
・site-b.example.local
利用者からは別々の Web サイトに見えるが、実際には 1 台の Apache サーバーがそれぞれのサイトを処理している。
Apache はブラウザから送信された Host ヘッダを確認し、
一致する VirtualHost へリクエストを振り分ける。
このように Apache は Host ヘッダを確認し、一致する VirtualHost の設定に従って Web コンテンツを返す。
・OS:Red Hat Enterprise Linux
・Webサーバー:Apache HTTP Server
公開ディレクトリが存在するか確認する。
ls -ld /var/www
ls -ld /var/www/site-a.example.local
ls -ld /var/www/site-a.example.local/html
存在しない場合は公開ディレクトリを作成する。
公開ディレクトリを作成する。
mkdir -p /var/www/site-a.example.local/html
所有者と権限を設定する。
chown -R apache:apache /var/www/site-a.example.local/html
chmod -R 755 /var/www/site-a.example.local
確認用ページを作成する。
vi /var/www/site-a.example.local/html/index.html
<h1>VirtualHost Test Page</h1>
<p>site-a.example.local</p>
ディレクトリとファイルが作成されたことを確認する。
ls -l /var/www/site-a.example.local/html
Apache の設定ディレクトリを確認する。
ls -l /etc/httpd/conf.d
VirtualHost 設定ファイルを作成する。
vi /etc/httpd/conf.d/site-a.example.local.conf
<VirtualHost *:80>
ServerName site-a.example.local
DocumentRoot /var/www/site-a.example.local/html
ErrorLog logs/site-a.example.local_error_log
CustomLog logs/site-a.example.local_access_log combined
</VirtualHost>
設定内容を確認する。
cat /etc/httpd/conf.d/site-a.example.local.conf
Apache 設定の構文確認を行う。
apachectl configtest
次の結果が表示されることを確認する。
Syntax OK
Apache の状態を確認する。
systemctl status httpd
Apache を再起動する。
systemctl restart httpd
サービス状態を確認する。
systemctl status httpd
Apache が認識している VirtualHost を確認する。
httpd -S
作成した VirtualHost が表示されることを確認する。
HTTP 応答を確認する。
curl -I -H "Host: site-a.example.local" http://127.0.0.1
HTTP 応答が返ることを確認する。
ブラウザから次の URL にアクセスする。
http://site-a.example.local
確認ページが表示されることを確認する。
VirtualHost の設定が完了したら
次は Apache を Reverse Proxy として利用する構成を整理する。