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