1.5. Apache 名ベースの仮想ホストの設定

名前ベースの仮想ホストは、Apache がサーバーの IP アドレスに解決する異なるドメインに対して異なるコンテンツを提供できるようにします。

本セクションの手順では、example.com ドメインおよび example.net ドメインの両方に、別のドキュメントルートディレクトリーを持つ仮想ホストを設定する方法を説明します。両方の仮想ホストが静的 HTML コンテンツに対応します。

前提条件

  • クライアントおよび Web サーバーは、example.com および example.net ドメインを Web サーバーの IP アドレスに解決します。

    これらのエントリーは DNS サーバーに手動で追加する必要がある点に注意してください。

手順

  1. httpd パッケージをインストールします。

    # yum install httpd
  2. /etc/httpd/conf/httpd.conf ファイルを編集します。

    1. 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 アドレスに送信される要求も含まれます。

  3. 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>
  4. 両方の仮想ホストのドキュメントルートを作成します。

    # mkdir /var/www/example.com/
    # mkdir /var/www/example.net/
  5. /var/www/内にない DocumentRoot パラメーターにパスを設定する場合は、両方のドキュメントルートに 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 コマンドを実行する必要があります。

  6. ローカルのファイアウォールで 80 ポートを開きます。

    # firewall-cmd --permanent --add-port=80/tcp
    # firewall-cmd --reload
  7. httpd サービスを有効にして起動します。

    # systemctl enable --now httpd

検証手順

  1. 各仮想ホストのドキュメントルートに異なるサンプルファイルを作成します。

    # echo "vHost example.com" > /var/www/example.com/index.html
    # echo "vHost example.net" > /var/www/example.net/index.html
  2. ブラウザーを使用して http://example.com に接続します。Web サーバーは、example.com 仮想ホストからのサンプルファイルを表示します。
  3. ブラウザーを使用して http://example.net に接続します。Web サーバーは、example.net 仮想ホストからのサンプルファイルを表示します。

関連情報

  • Apache 仮想ホストの設定に関する詳細は、Apache マニュアルの 仮想ホスト のドキュメントを参照してください。マニュアルのインストールの詳細は、「Apache HTTP Server の手動インストール」を参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。