1.7. Apache 名前ベースの仮想ホストの設定
名前ベースの仮想ホストを使用すると、Apache は、サーバーの IP アドレスに解決されるドメイン別に異なるコンテンツを提供できます。
別々のドキュメントルートディレクトリーを使用して、example.com
ドメインと example.net
ドメインの両方に仮想ホストを設定できます。どちらの仮想ホストも静的 HTML コンテンツを提供します。
前提条件
クライアントおよび Web サーバーは、
example.com
およびexample.net
ドメインを Web サーバーの IP アドレスに解決します。これらのエントリーは DNS サーバーに手動で追加する必要がある点に注意してください。
手順
httpd
パッケージをインストールします。# yum install httpd
/etc/httpd/conf/httpd.conf
ファイルを編集します。example.com
ドメイン向けに以下の仮想ホスト設定を追加します。<VirtualHost *:80> DocumentRoot "/var/www/example.com/" ServerName example.com CustomLog /var/log/httpd/example.com_access.log combined ErrorLog /var/log/httpd/example.com_error.log </VirtualHost>
これらの設定は以下を設定します。
-
<VirtualHost *:80>
ディレクティブの全設定は、この仮想ホストに固有のものです。 -
DocumentRoot
は、仮想ホストの Web コンテンツへのパスを設定します。 ServerName
は、この仮想ホストがコンテンツを提供するドメインを設定します。複数のドメインを設定するには、
ServerAlias
パラメーターを設定に追加し、追加のドメインをスペース区切りで、このパラメーターに指定します。-
CustomLog
は、仮想ホストのアクセスログへのパスを設定します。 ErrorLog
は、仮想ホストのエラーログへのパスを設定します。注記Apache は、
ServerName
およびServerAlias
パラメーターに設定したドメインどれにも一致しない要求の場合でも、設定で最初に検出された仮想マシンを使用します。これには、サーバーの IP アドレス対してに送信される要求も含まれます。
-
example.net
ドメイン向けに同様の仮想ホスト設定を追加します。<VirtualHost *:80> DocumentRoot "/var/www/example.net/" ServerName example.net CustomLog /var/log/httpd/example.net_access.log combined ErrorLog /var/log/httpd/example.net_error.log </VirtualHost>
両方の仮想ホストのドキュメントルートを作成します。
# mkdir /var/www/example.com/ # mkdir /var/www/example.net/
DocumentRoot
パラメーターのパスが/var/www/
内にない設定を行う場合は、両方のドキュメントルートにhttpd_sys_content_t
コンテキストを設定します。# semanage fcontext -a -t httpd_sys_content_t "/srv/example.com(/.*)?" # restorecon -Rv /srv/example.com/ # semanage fcontext -a -t httpd_sys_content_t "/srv/example.net(/.\*)?" # restorecon -Rv /srv/example.net/
以下のコマンドは、
/srv/example.com/
および/srv/example.net/
ディレクトリーにhttpd_sys_content_t
コンテキストを設定します。policycoreutils-python-utils
パッケージをインストールしてrestorecon
コマンドを実行する必要があります。firewalld
を使用する場合は、ローカルのファイアウォールでポート80
を開きます。# firewall-cmd --permanent --add-port=80/tcp # firewall-cmd --reload
httpd
サービスを有効にして起動します。# systemctl enable --now httpd
検証
仮想ホストのドキュメントルートごとに異なるサンプルファイルを作成します。
# echo "vHost example.com" > /var/www/example.com/index.html # echo "vHost example.net" > /var/www/example.net/index.html
-
ブラウザーを使用して
http://example.com
に接続します。Web サーバーは、example.com
仮想ホストからのサンプルファイルを表示します。 -
ブラウザーを使用して
http://example.net
に接続します。Web サーバーは、example.net
仮想ホストからのサンプルファイルを表示します。