Apache | 仮想ホスト(VirtualHost)の設定 | IPベースの仮想ホスト
IPベースの仮想ホスト
IPベースでは、1台のサーバーに複数のLANカードが装着されており、複数のIPアドレスを利用できる場合に、それぞれのIPアドレスに対して仮想ホストを指定する。
IPベースの仮想ホストを割り当てるには VirtualHost を使用する。
<VirtualHost IPアドレス1:ポート番号>
...
...
</VirtualHost>
<VirtualHost IPアドレス2:ポート番号>
...
...
</VirtualHost>
例えば、192.168.1.1 と 192.168.1.2 の2つのIPアドレスが割り当てられている場合、DNSに ww1.devkuma.com を 192.168.1.1 として登録し、ww2.devkuma.com を 192.168.1.2 として登録する。
1つのApacheで2つのホストを設定するには、httpd.conf または http-vhosts.conf ファイルに次のように記述する。管理面から見ると、httpd.conf よりも http-vhosts.conf に記述するのが適切である。詳しくは 名前ベースの仮想ホスト を参照する。
<VirtualHost 192.168.1.1:80>
ServerName ww1.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww1"
CustomLog logs/ww1.access.log common
ErrorLog logs/ww1.error.log
</VirtualHost>
<VirtualHost 192.168.1.2:80>
ServerName ww2.devkuma.com
ServerAdmin devkuma@devkuma.com
DocumentRoot "${SRVROOT}/htdocs-ww2"
CustomLog logs/ww2.access.log common
ErrorLog logs/ww2.error.log
</VirtualHost>
IPアドレスごとに必要な設定を行う。例えば ww1.devkuma.com にアクセスすると、192.168.1.1 に設定されたドキュメントルート ${SRVROOT}/htdocs-ww1 にある内容が返される。
VirtualHost ごとに個別の設定を記述できるため、必要な設定を行う。上記のように、ServerName、DocumentRoot、ログ関連の設定は個別に設定することを推奨する。もちろん必須ではないため、共通設定としても問題はない。
そのほか、各ドキュメントルートのアクセス権限設定も必要である。httpd.conf ファイルで、次のように2つのドキュメントルートに適切な権限を設定する。
<Directory "${SRVROOT}/htdocs-ww1">
Require all granted
</Directory>
<Directory "${SRVROOT}/htdocs-ww2">
Require all granted
</Directory>
実習
※ IPベースの仮想ホストをテストできる環境がなかったため、実際の実習および確認テストは行わずに作成した。参考にしてほしい。