複数のWebサイトを1つのドメインにまとめる(サイトの集約)
サイトの集約(Sites Aggregation) は、サイトとは異なるドメインを持つWebページを、サイトのドメインでホストする機能です。
代表的なユースケースは「KARTEで複数ドメインをまたぐWebサービスのユーザー行動を計測する」場合です。
例えば、あるWebサービスでKARTEの計測機能を利用する場合を考えます。このWebサービスは、別ドメインを持つ外部の予約サービスを使って予約機能を実装しています。このとき、「KARTEで計測できるのは同一ドメインおよびサブドメイン上のユーザー行動のみ」という仕様により、予約機能上のユーザー行動は計測できません。
この課題を解決するため、サイトの集約が利用できます。次の図はサイトの集約を利用する場合の構成図です。
WebサービスのサブドメインでCraft Sitesのサイトをホストし、サイトの集約で予約機能をホストします。こうすることで、Webサービスと予約機能は同一ドメイン配下となり、一貫したユーザー行動が計測できるようになります。
サイトの集約の仕組み
サイトの集約を構成する要素は次のとおりです。
- プロキシ: サイトの集約の構成単位。中継対象のルール(パス)とドメイン名(転送先ドメイン名)から成り立ちます。
- パス: リクエストを中継する際のルール。
- 1つのプロキシについて、複数のルールが指定できます。
- URLパスおよびワイルドカード
*
を使ったパスパターンが指定できます。 - また、パス(パスパターン)ごとにパスの書き換えも設定できます。
- 転送先ドメイン名: リクエストを中継する先のドメイン名。
- 1つのプロキシについて1つまで指定できます。
- ドメイン名に指定できるのは、公開されているWebページのみです。
サイトの集約は、次のような仕組みで機能を実現しています。
- サイトにリクエストが到達します。
- リクエストのパスがプロキシのパス(パスパターン)に当てはまった場合、次の処理を行います。
- ドメインを転送先ドメイン名に書き換えます。
- パスを転送先のパスに書き換えます。
- 書き換え済みのURLを使って公開Webサイトにリクエストを中継します。
- 中継先からのレスポンスを、サイトのレスポンスとして返却します。
サイトの集約を設定する
サイトの集約を設定するための手順は次のとおりです。
- プロキシを作成し、プロキシ先ドメイン名を設定する。
- プロキシによる中継対象のパスを設定する。
プロキシを作成する
管理画面でプロキシを作成する手順は次のとおりです。
- KARTE管理画面で「Craft」>「サイト」を選択し、サイト一覧画面を表示します。
- 対象のサイト名を選択して、エディター画面を表示します。
- 画面右上の三点リーダー(…)から「プロキシ一覧」を選択し、プロキシ一覧画面を表示します。
- 「新規作成」を選択し、プロキシ作成ダイアログを表示します。
- 「名前」にプロキシの名前を指定します。
- 「転送先ドメイン」に中継先のドメイン名を指定します。
- プロキシ作成ダイアログで「保存」を選択します。
パスを設定する
パスの設定はエディター画面のファイル操作パネルで行います。
- ファイル操作パネルで、中継対象のフォルダ階層を選択します。
- フォルダが存在しない場合はファイル操作パネル上部の「追加」からフォルダを作成してください(フォルダの作成 参照)。
- ファイル操作パネル上部の「追加」から「プロキシパスを追加」を選択し、プロキシパス追加ダイアログを開きます。
- 「プロキシ先」で対象のプロキシ名を選択します。
- 「書き換え先のパス」でパスの書き換え設定を行います。
- 「追加」を選択し、通常のファイル、フォルダと同じように入力欄にパスの末尾を入力します。
次にパスの設定例を示します。
/path/to/proxy/index.html
をプロキシ対象にする場合- ファイル操作パネルで
/path/to/proxy
フォルダを選択します。 - 「プロキシパスを追加」でプロキシ先を選択し、
index.html
と入力します。
- ファイル操作パネルで
/path/to/proxy/
配下の全てのパスをプロキシ対象にする場合- ファイル操作パネルで
/path/to/proxy
フォルダを選択します。 - 「プロキシパスを追加」でプロキシ先を選択し、
*
と入力します。
- ファイル操作パネルで
/path/to/proxy/
をプロキシ対象にする場合- ファイル操作パネルで
/path/to/proxy
フォルダを選択します。 - 「プロキシパスを追加」でプロキシ先を選択し、空文字 “ を入力します。
- ファイル操作パネルで
パスを削除する
ファイル操作パネルでパスを削除できます。
- ファイル操作パネルで対象のファイル・フォルダ名の三点リーダー(…)メニューから「削除」を選択します。
- ダイアログに対象のパスが表示されるので内容を確認し、削除してよければ「削除」を選択します。
プロキシを削除する
プロキシの削除は「プロキシ一覧」画面から行えます。
- プロキシに紐づくパスを全て削除します。
- 未削除の場合は削除できません。
- 「プロキシ一覧」画面を開きます。
- 対象のプロキシがある行の三点リーダー(…)から「削除」を選択します。
- ダイアログが開くので内容を確認し、「削除」を選択します。
サイトの集約の性質
サイトの集約を設定するにあたって、考慮すべき性質を説明します。
プロキシのパスはサイトのコンテンツより優先度が高い
サイトの集約では、サイトに実在するコンテンツと同一のパスや、ワイルドカードによる包含関係を持つパスが指定できます。このようなパスをプロキシに設定した場合、当該パスへのリクエストは実在のコンテンツに到達せず、プロキシ先に中継されます。
例えば、サイト内に /path/to/content/index.html
というファイルがあったとします。サイトの集約機能でプロキシを作成し、パスに /path/to/content/index.html
を指定した場合、/path/to/content/index.html
へのリクエストはサイト内のファイルではなく、プロキシ先に中継されます。また、パスに /path/to/content/*
を指定した場合、/path/to/content
配下にどんなファイルが置かれていても、プロキシの方が優先になります。
制限
サイトに紐づけられるプロキシ数および、プロキシで設定できるパス数には上限があります。