条件の設定

条件は、特定のリクエストが処理される方法をコントロールするためにサービスに追加できる設定メカニズムです。一般的なプログラミングの条件と同様に、Fastly の条件は IF ステートメントを使用し、ユーザーが指定したロジックを利用してリクエストを評価し、リクエストが条件に合致するか (TRUE) 否か (FALSE) に基づいてレスポンスを算出します。

the manage conditions page displaying a single, unattached request condition

コントロールパネルの Conditions 機能を使用するか、 またはスニペットカスタム VCLVCL IF ステートメントを使用することで、条件を適用できます。

条件の使用開始前に

条件の使用を開始する前に、基本的な論理式の構造を理解しておく必要があります。具体的には、条件を扱う際に、C 言語の基本的な論理式構文 (基本ロジック、&& などの論理演算子、優先順位など) を理解している必要があります。C 言語または Perl 言語の「IF」スタイル式を扱う基本的なプログラミングガイド (Perl であれば Tizag Perl チュートリアル) が入門に適しています。Fastly での条件例に直接適用できませんが、これらの言語のシンタックスは VCL と似ています。

シンプルな条件の例

Fastly による条件の処理方法を理解する最も簡単な方法は、次の IF 文を見ていただくことです。

IF
this condition happens
THEN
respond this way

実例を見るとよく分かります。ほとんどの場合、サイトでは通常どおり情報のリクエストが処理されますが、顧客が検索用語を誤入力した場合や、探しているものを見つけられない場合に、404 Not Found エラーを表示しなければならないことがしばしばあります。このような場合、標準の404エラーが Webサイトに表示されてもユーザーの役には立ちません。この問題を解決するには、お客様が探しているものがサーバーで見つからない場合に (条件)、サポートチームに問い合わせるように指示する、カスタマイズされた404メッセージを表示した方が良いでしょう (レスポンス)。

英語でシンプルに記述すると、IF 文は次のようになります。

IF
404 Not Found is what we have to tell the customer
THEN
respond with the special Contact Support page

上記の例の IF 行は、設定した条件です。THEN 行には、その条件が満たされた場合のアクションが記述されています。

上記の例の英語を VCL 変数と少々の HTML で置き換えると、次のようになります。

IF
beresp.status == 404
THEN
respond with <html><body><h1>Can't find it?</h1><p>Contact support@example.com for help.</p></body></html>

ご興味のある場合は、カスタムレスポンスでエラーページを作成するためのステップバイステップの説明をご覧ください。

条件の利用に関するアイデア

条件の活用方法についてアイデアを得たい場合は、以下を参考にしてください。

条件レスポンス手順
ウェブロボットに Webサイトの指定したエリアをクロールさせたいWebサイトのどの領域を処理、スキャンさせないかを定義するためのカスタマイズされた robots.txt ファイルを提供するrobots.txt ファイルを作成してカスタマイズする
サーバーが 404 Not Found レスポンスを返す必要がある404レスポンスのみを対象としたデフォルトのキャッシュ時間を3600秒 (60分) から120秒 (2分) に変更するバックエンドのレスポンスに基づいてキャッシュ設定のデフォルトをオーバーライドする
ユーザーがサイトで人気のページをリクエストしたところ、そのページは別の場所に移動していたオリジンサーバーに戻らずに、エッジで Fastly にページリクエストをリダイレクトさせるリダイレクト

条件のタイプと使用可能なタイミング

条件は次の3つのタイプに分けられます。

  • リクエスト条件
  • レスポンス条件
  • キャッシュ条件

条件のタイプは、キャッシュ処理の特定の段階で、どの設定オブジェクトに適用できるかを決定します。また、キャッシュの各段階は、条件を作成するために使用できる、一連の VCL 変数と連携します。

条件タイプFastly が以下を実行した時に適用次の VCL 変数と動作
リクエストリクエストを処理client.*
server.*
req.*
レスポンスリクエストに対するレスポンスを処理client.*
server.*
req.*
resp.*
キャッシュレスポンスがキャッシュされる (その可能性がある) 直前に、オリジンからレスポンスを受信client.*
server.*
req.*
beresp.*

条件に関するより詳しい情報

Varnish Cache のドキュメントに、条件の作成に使用できる変数のリストが掲載されています。ただし、Varnish が許可する変数の中には、利用できないものや Fastly サービスのコンテキストでは意味を成さないものがあることに留意してください。詳細については、VCL ガイドをご覧ください。