公式のApache Virtual Host Documentationには、以下のように書かれています:
バーチャルホスト という用語は、1台のマシンで複数のウェブサイト( company1.example.com と company2.example.comなど)を運用することを指します。 バーチャルホストは、ウェブサイトごとに異なるIPアドレスを持つ「IPベース」と、各IPアドレスに複数の名前を持つ「ネームベース」があります。 同じ物理サーバー上で動作していることは、エンドユーザーにはわかりません。 (参照: Apache バーチャルホストドキュメント)
では、なぜバーチャルホストを使うのでしょうか? 考えられるユースケースとしては、同じデータベースにアクセスするために、2つの異なるアクセスポイントを用意することです。 Liferayプラットフォームは、名前ベースのバーチャルホストを2つの異なるレベルで実装します。(1) 仮想インスタンス設定 (レガシーポータルからアップグレードする場合は、以前のポータルインスタンス) と、(2) サイトレベルでの実装です。
ユーザーは新しい仮想インスタンスを作成することで、同じLiferayプラットフォームのインストール上で実行しながら、異なるサイトドメインを持つことができます。 さらに、Liferayプラットフォームのサイトは、サイトのパブリックおよびプライベートページセットに対応する独自のパブリックおよびプライベートバーチャルホストを持つことができます。 なお、仮想インスタンスには複数のサイトが含まれることがあります。
解像度
異なるバーチャルホストドメイン名をLiferayプラットフォームで認識できるようにするために、これらのドメイン名をホストするLiferayサーバーに解決する必要があります。 この場合、通常、DNSサーバーに何らかの細工をして、これらの名前を対応するIPアドレスに関連付けることができますが、その具体的な例は、この記事の範囲外です。
新しいVirtual Instanceを追加するには、次のようにします:
- Liferay DXPの起動
- コントロールパネル > 設定 > 仮想インスタンスにアクセスします。
- 右下の Add ボタンをクリックします。
- 4つのフィールドとトグルボックスがあります:
- Web ID: 一般的な慣例では、このためにドメイン名を使用する。これは、インスタンスのためのユーザー生成IDである。
- Virtual Host: ネットワークで設定したドメイン名をここに入れます。 このドメイン名を介してユーザーがLiferayサーバーに誘導されると、Liferayプラットフォームは適切な仮想インスタンスにユーザーを送ることができるようになります。
- メールドメイン: このインスタンスのメールホストのドメイン名を入力します。 Liferayプラットフォームは、これを利用してインスタンスからメール通知を送信します。
- Max Users: 仮想インスタンスがサポートするユーザーアカウントの最大数を入力します。 デフォルトの「0」は、ゼロではなく、無限大を意味します。
- Active(アクティブ)です:このトグルを使用して、アクティブな仮想インスタンスと非アクティブな仮想インスタンスのどちらを作成するかを選択します。
- [Save]ボタンをクリックします。
また、Liferay DXP内の各サイトに独自の仮想ホスト名を指定することができます。 このため、同一サイト内で公開ページ用と非公開ページ用のバーチャルホストを定義することが可能です。 そうするためには
- コントロールパネル > サイトにアクセスします。
- 設定するサイトを選択します。 構成 > サイト設定をクリックします。
- スクロールダウンして、「サイトURL」のドロップダウンに移動します。
- 表示される指示に従って、バーチャルホスト名とサイトのフレンドリーURLを指定します:
- [Save]ボタンをクリックします。
ステップ4に示すように、サイトはフレンドリーなURLを持つことができます。 また、パブリックおよびプライベートの仮想ホスト名を設定することができます。 これにより、サイトページにアクセスするための仕組みが追加されます。
ページにアクセスするために、Liferayプラットフォームは4つのデータ項目を定義する必要があります:
- は、仮想インスタンス
- をご覧ください、
- ページが公開か非公開か、である、
- ページそのものを表示します。
これらのデータ項目は、URLから取得します。
ここでは、/homeをデフォルトの仮想インスタンスで作成されたゲストサイトの公開ページとします。 デフォルトでは、Liferayプラットフォームは以下のURLを受信すると、そのページを提供します:
http://localhost:8080/web/guest/home
場所:
- localhost は、ポータルインスタンスの仮想ホスト名です。 Liferay プラットフォームはデフォルトの仮想インスタンスを作成し、そのホスト名を localhostに設定することに注意してください。
- web は、公開ページにアクセスしていることを示す、あらかじめ定義された接頭語です。 プレフィックス グループ は、プライベートページにアクセスするために使用することができます。
- guest はサイトフレンドリーURLを表します。 Liferay プラットフォームはデフォルトの仮想インスタンスにデフォルトのサイトを作成し、そのフレンドリー URL を /guestに設定することに注意してください。
- home は、そのサイト内のページフレンドリーURLです。 Liferayプラットフォームはデフォルトのサイトにページを作成し、そのフレンドリーURLを /homeに設定することに注意してください。
サイトレベルのバーチャルホスト名を有効にすると、URLからデータを抽出する方法が追加されるだけです。 ここでは、 site-virtual-host という名前が、サイトのパブリックバーチャルホストとして設定されていると仮定します。 すると、Liferayプラットフォームは以下のURLを受け取ることができます:
http://site-virtual-host:8080/home
場所:
- site-virtual-host は、サイトの公開ページ用に定義されたサイトレベルのバーチャルホストです。 これはプラットフォームに3つのことを伝えます:サイト、仮想インスタンス、そしてURLが公開ページを指しているという事実です。
- home は、そのサイト内のページフレンドリーURLです。
つまり、サイトを含む仮想インスタンスのドメイン名と、サイトのバーチャルホストが定義されている場合はそれを使って、ページにアクセスすることができます。
よくある質問(FAQ)
-
同じバーチャルホスト名を複数回使用することはできますか?
できません。 仮想ホスト名は、すべてのポータルインスタンスで、つまりLiferay DXPのフルインストールで一意になります。 バーチャルホスト名は一意でなければなりません。さもなければ、ポータルはこのリクエストが誰に対するものかを判断する際に無限ループに陥ります。 インスタンスレベルとサイトレベルのドメイン名の両方が VirtualHost テーブルに保存されることに注意してください。その結果、サイトバーチャルホストは、両方のサイトが異なる仮想インスタンスに属していても、他のサイトのバーチャルホスト名を再利用することはできません。 バーチャルホスト名の一意性のさらなる証明として、管理者は VirtualHost テーブルが hostname カラムを主キーとして使用しているデータベーステーブルを見ることができます。 -
サイトのバーチャルホスト名が一意である場合、アクセスポイントはそれだけなのか?
いいえ。 サイトの公開ページには、個別の仮想ホスト名(例:iheartbiscuits.com)があるとします。ユーザーは、 Portal Instance の 独自の仮想ホスト名(例:iluvcookies.com)からこれらのページに引き続きアクセスすることができます。 -
この機能はLiferayのレガシーバージョンでも利用可能ですか?
はい。 Liferay DXPのバーチャルインスタンスは、以前はLiferay Portalの portal instances と呼ばれていました。 サイトレベルのバーチャルホスト(名前は変更されません)は、Liferay Portalのレガシーバージョンで見られます。
追加情報
- Liferay Official Documentation: Virtual Instances
- LPS-33339 を参照してください。Liferayがアクセスを制限することによってバーチャルホストを改善する方法についての情報と最新情報を得ることができます。
- Apache バーチャルホストドキュメント