条件の設定

条件は、リクエストの処理方法を制御します。条件を使用して、サービス内の基本設定オブジェクトにロジックを追加し、そのオブジェクトが適用される条件を定めることができます。条件を記述するには最低限のプログラミングが必要です。 VCLの IF ステートメントで、サービスに紐付けた設定オブジェクトをラップすることができます。

条件の使用開始前に

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

シンプルな条件の例

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

1
2
3
4
IF
   this condition happens
THEN
   respond this way

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

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

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

上の例では IF 行が、設定した_条件_です。その条件が満たされた場合に起こることは、THEN 行に記述されています。

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

1
2
3
4
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 サイトのどの領域を処理、スキャンさせないかを定義するためのカスタマイズされた robots.txt ファイルを提供する robots.txt ファイルの作成とカスタマイズ
サーバーが 404 Not Found レスポンスを返す必要がある 404レスポンスのみを対象としたデフォルトのキャッシュ時間を3600秒 (60分) から120秒 (2分) に変更する バックエンドレスポンスに基づいたキャッシュデフォルトの上書き
ユーザーがサイトで人気のページをリクエストしたところ、そのページは別の場所に移動していた オリジンサーバーに戻らずに、エッジで Fastly にページ要求をリダイレクトさせる エッジでの HTTP リダイレクトの生成

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

条件は次の3タイプにグループ化されます。

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

条件のタイプは、キャッシュ処理の特定の段階で、どの設定オブジェクトに適用できるかを決定します。また、キャッシュの各ステージにて、条件の作成に使用されるさまざまな VCL 変数セットが使用されます。

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

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

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

Back to Top