単一のシンプルなアプリケーションサーバーで複数の独立したウェブサイトをホストする場合、Apache の仮想ホスト(Virtual Host)を構成することで、各ドメイン名を専用のウェブサイトディレクトリにルーティングできます。これにより、1 台のサーバーと 1 つの IP アドレスで複数の独立したサイトを提供可能となり、各ドメインは異なるドキュメントルート(DocumentRoot)を指すようになります。
実施内容:
各サイトごとに個別のウェブサイトディレクトリを作成します
Apache の仮想ホスト構成を有効化します
ドメインごとに
VirtualHostブロックを追加し、そのドキュメントルートとサーバー名を指定しますApache を再起動します
(任意)実際の登録済みドメイン名がまだない場合は、ローカル DNS オーバーライドによるテストを行います
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Linux、Apache、MySQL、PHP(LAMP)アプリケーションイメージから作成されたシンプルなアプリケーションサーバー。設定手順については、「LAMP 開発環境の構築」をご参照ください。
2 つ以上の登録済みドメイン名。Alibaba Cloud でドメイン名を登録するには、「汎用ドメイン名の登録」をご参照ください。
例として使用する環境
以下に示す手順では、下記のリソースを例として使用します。実際の環境に応じて、適宜値を置き換えてください。
| リソース | 値の例 |
|---|---|
| サーバー | LAMP 7.4 アプリケーションイメージ |
| ウェブサイト 1 | test01、test01.example.com |
| ウェブサイト 2 | test02、test02.example.com |
仕組み
Apache は名前ベースの仮想ホスティング(name-based virtual hosting)を採用しています。リクエストが到着すると、Apache は Host ヘッダーを読み取り、該当する VirtualHost ブロックへリクエストをルーティングします。各ブロックは、ドメイン名とウェブサイトディレクトリをマップします。このため、1 台のサーバーおよび 1 つの IP アドレスで複数の独立したウェブサイトを提供できます。
操作手順 1:ウェブサイトディレクトリの作成
ウェブサイトのコードが既にサーバーのウェブサイトルートディレクトリに格納されている場合は、このステップをスキップしてください。
LAMP サーバーへの接続を行います。
ウェブサイトのルートディレクトリに移動します。ルートディレクトリのパスは LAMP イメージのバージョンによって異なります。LAMP 7.4 の場合、次のコマンドを実行します。
LAMP 7.4 アプリケーションイメージにおけるデフォルトのウェブサイトルートディレクトリは /data/wwwroot/example です。
各ウェブサイト用のサブディレクトリを作成します。
sudo mkdir test01 sudo mkdir test02test01用のテストページを作成します。cd /data/wwwroot/example/test01/ sudo vi index.htmlIキーを押して編集モードに入り、以下の内容を入力した後、Escキーを押し、:wqを入力してEnterキーを押して保存します。Test page 01test02用のテストページを作成します。cd /data/wwwroot/example/test02/ sudo vi index.htmlIキーを押して編集モードに入り、以下の内容を入力した後、Escキーを押し、:wqを入力してEnterキーを押して保存します。Test page 022 つのページは異なるコンテンツを含むため、各ドメインが正しいサイトにルーティングされることを確認できます。
| LAMP バージョン | ウェブサイトルートディレクトリ |
|---|---|
| LAMP 7.4 | /data/wwwroot/example |
| LAMP 6.1.0 | /home/www/htdocs |
cd /data/wwwroot/example/test02/cd /data/wwwroot/example/test01/cd /data/wwwroot/example/test01/
sudo vi index.html操作手順 2:Apache 仮想ホストの構成
以下の 2 つの Apache 構成ファイルが関係します。
`httpd.conf` — Apache のメイン構成ファイル。ここで仮想ホストのインクルードを有効化します。
`vhost.conf` — 各ドメインの仮想ホストブロックを定義します。
2.1 仮想ホスト構成の有効化
httpd.confを開きます。sudo vi /etc/httpd/conf/httpd.conf以下の行を探します。
# Virtual hosts #Include conf/extra/httpd-vhosts.conf#を#Include行の先頭から削除し、次のように変更します。# Virtual hosts Include conf/extra/httpd-vhosts.conf以下の図は、変更後の行を示しています。

Escキーを押し、:wqを入力してEnterキーを押して保存します。
2.2 仮想ホストブロックの追加
vhost.confを開きます。sudo vi /etc/httpd/conf.d/vhost.confIキーを押して編集モードに入ります。ファイル内に既に存在するデフォルトの<VirtualHost *:80></VirtualHost>ブロックを、以下の図に示すようにコメントアウトします。
ファイル末尾に、各ドメインごとの
VirtualHostブロックを追加します。パラメーター 説明 フォーマット DocumentRootウェブサイトディレクトリ DocumentRoot "<ディレクトリパス>"ServerNameこの仮想ホストのドメイン名 ServerName <ドメイン名><VirtualHost *:80> DocumentRoot "/data/wwwroot/example/test01" ServerName test01.example.com </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/example/test02" ServerName test02.example.com </VirtualHost>Escキーを押し、:wqを入力してEnterキーを押して保存します。
2.3 Apache の再起動
以下のコマンドを実行して Apache を再起動します。
sudo systemctl restart httpd操作手順 3(任意):テスト用ドメインをサーバーの IP アドレスにマップ
実際の登録済みドメイン名ではなくプレースホルダー(例:test01.example.com)を使用した場合のみ、このステップを実行してください。この手順では、ローカル Windows マシン上の DNS 解決を一時的にオーバーライドし、DNS レコードを設定せずに構成をテストできます。
実際のドメイン名を使用する場合は、代わりに LAMP サーバーにバインドしてください。手順については、「ドメイン名のバインドと解決」をご参照ください。その後、操作手順 4 に進んでください。
C:\Windows\System32\drivers\etcに移動します。hostsファイルをコピーしてバックアップを取ります。テスト後に元のファイルを復元できるよう、コピーしたファイルは保持してください。hostsファイルを開き、以下の行を末尾に追加します。プレースホルダー部分は、ご利用のシンプルなアプリケーションサーバーのパブリック IP アドレスに置き換えてください。<シンプルなアプリケーションサーバーのパブリック IP アドレス> test01.example.com <シンプルなアプリケーションサーバーのパブリック IP アドレス> test02.example.com管理者としてコマンドプロンプトを開き、DNS キャッシュをクリアします。
ipconfig /flushdns
操作手順 4:構成の検証
ブラウザを開き、各ドメインにアクセスします。
test01.example.com— 以下の図に示すように、ページにTest page 01が表示されます。
test02.example.com— 以下の図に示すように、ページにTest page 02が表示されます。
各ドメインがそれぞれ固有のコンテンツを正しく読み込むことで、Apache がリクエストを正しい仮想ホストにルーティングしていることが確認できます。
次のステップ
ドメイン名に対して HTTPS を有効化するには、サーバーに SSL 証明書をインストールします。これにより、通信中のデータが暗号化され、改ざんや情報漏洩に対する保護が強化されます。