メインコンテンツまでスキップ

KurocoEdgeシステム構築

KurocoEdgeは、ユーザーのブラウザとオリジンサーバーの間で通過するネットワークトラフィックを処理するミドルウェア(プロキシ)です。

リクエストとレスポンス

リクエストとレスポンスの流れを下図に示します。
Image from Gyazo
ユーザーのリクエストはKurocoEdgeに届き、KurocoEdge内で指定されたリクエストルールによって処理されます。オリジンサーバはレスポンスを返し、KurocoEdgeに到達したレスポンスはKurocoEdge内で指定されたレスポンスルールで処理され、処理されたレスポンスはユーザに送信されます。

デプロイ

KurocoEdgeでは、デプロイは順序付けられたルールのセットであり、それぞれがKurocoEdgeネットワーク上のトラフィックに適用されるアクションのコレクションで構成されています。
デプロイメントはバージョン管理されており、同時にアクティブにできるデプロイメントのバージョンは1つだけです。プレビューモードを使用してルールをテストしても、他のドラフトバージョンや、エンドユーザーがサイトを閲覧する際に現在使用しているアクティブバージョンに影響を与えることはありません。

ルール

ルールは、リクエストやレスポンスに対して実行されるアクションのリストを定義します。ルール内のアクションは、KurocoEdgeの管理画面に表示されるように、上から下へ順に処理されます。

各リクエストに対して、KurocoEdgeは、適用可能なすべてのルールから、リクエストに適用されるアクションのリストと、レスポンスに適用されるアクションのリストという2つの順序のアクションのリストを内部で作成します。ルールは、URLパスパターンやURLパスプレフィックスなど、ルールの一般的な設定で指定された条件/式に一致する場合に適用されます。

リクエストアクションとレスポンスアクションの2つのリストはほぼ独立していますが、同じユニークなデータストレージにアクセスするなど、いくつかの要素を共有しています:リクエストアクションで変数がキャプチャされると、キャプチャされた変数はその後のリクエストとレスポンスアクションでも使用できるようになります。したがって、ルールにリクエストアクションとレスポンスアクションの両方を定義できるようにすることで、リクエストからレスポンスまでのプロセスを特定するビジネスロジックをコンパクトに整理することができます。

アクション

各アクションは3つのパートから構成されています:

  • 条件/変数: ここでは、条件や変数の定義のリストを定義します。各条件項目はtrueまたはfalseとなり、アクションのすべての条件項目がtrueである場合にのみ、実行ブロックが処理されることになる。さらに、ここでは静的変数、外部APIからの動的変数、ヘッダーやURLなどリクエスト/レスポンスの任意の部分から正規表現を使ってキャプチャするなど、複数の方法で変数を定義することができます。
  • 実行: ここで、すべての条件が成立した場合に何が起こるかを定義します(もしあれば)。リクエスト/レスポンスヘッダーの変更、新しいバックエンドの定義、合成レスポンスによる応答、HTML編集ルールの作成など、さまざまなことができます。
  • 指示フラグ: これは、与えられたアクションのためのいくつかのオプションの設定を見つけることができる場所です。

リクエストアクションとレスポンスアクションでは、設定が異なることに注意してください。例えば、HTMLの編集は Response に対してのみ可能であり、クライアントのIPアドレスのチェックは Request に対してのみ可能である。

KurocoEdgeを介したリクエストとレスポンスの流れ、およびそのルールを以下の図に示します。
Image from Gyazo
すべてのルールのリクエストアクションが最初に実行され、その後にすべてのルールのレスポンスアクションが実行されます。

さらに、各アクションは独自の条件を持つことができます。アクションの条件が満たされれば、そのアクションは実行される。もしルールに条件が満たされていないリクエストアクションがあれば、リクエストアクションは実行されませんが、レスポンスアクションの条件が満たされていれば、レスポンスアクションはまだ実行されます。 Image from Gyazo

通常の場合、アクションはA→B→C→X→Y→Zの順で実行され、すべてのリクエストアクション(A、B、C)を順番に実行し、オリジンからレスポンスが到着するとレスポンスアクション(X,Y,Z)がそれに続く。 ただし、あるアクションが実行時に他のアクションをスキップという指示フラグを有効にしている場合、同じタイプの後続アクションはすべてスキップされる。 例えば、リクエストアクションB2が実行時に他のアクションをスキップというフラグを有効にして実行された場合、それに続くすべてのリクエストアクション(B3、C1、C2、C3)は実行されない。しかし、このフラグは応答アクションには影響しないので、すべての応答アクション(X、Y、Z)は実行されます。

関連ドキュメント


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Discordコミュニティにご参加ください。