- English
- 日本語
条件の設定
最終更新日 2023-10-03
条件は、特定のリクエストが処理される方法をコントロールするためにサービスに追加できる設定メカニズムです。一般的なプログラミングの条件と同様に、Fastly の条件は IF ステートメントを使用し、ユーザーが指定したロジックを利用してリクエストを評価し、リクエストが条件に合致するか (TRUE) 否か (FALSE) に基づいてレスポンスを算出します。
条件は、コントロールパネルの Conditions 機能を使用するか、または スニペットやカスタム VCL で VCL IF ステートメントを使用することで適用できます。
条件の使用開始前に
条件の使用を開始する前に、基本的な論理式の構造を理解しておく必要があります。具体的には、条件を扱う際に、C 言語の基本的な論理式構文 (基本ロジック、&& などの論理演算子、優先順位など) を理解している必要があります。C 言語または Perl 言語の「IF」スタイル式を扱う基本的なプログラミングガイド (Perl であれば Tizag Perl チュートリアル) が入門に適しています。Fastly での条件例に直接適用できませんが、これらの言語のシンタックスは VCL と似ています。
シンプルな条件の例
Fastly による条件の処理方法を理解する最も簡単な方法は、次の IF 文を見ていただくことです。
1234
IF this condition happensTHEN respond this way
実例を見るとよく分かります。ほとんどの場合、サイトでは通常どおり情報のリクエストが処理されますが、顧客が検索用語を誤入力した場合や、探しているものを見つけられない場合に、404 Not Found エラーを表示しなければならないことがしばしばあります。このような場合、標準 404 エラーが Webサイトに表示されてもユーザーの役には立ちません。この問題を解決するには、お客様が探しているものがサーバーで見つからない場合に (条件)、サポートチームに問い合わせるように指示する、カスタマイズされた404メッセージを表示した方が良いでしょう (レスポンス)。
英語でシンプルに記述すると、IF 文は次のようになります。
1234
IF 404 Not Found is what we have to tell the customerTHEN respond with the special Contact Support page
上記の例の IF 行は、設定した条件です。THEN 行には、その条件が満たされた場合のアクションが記述されています。
上記の例の英語を VCL 変数と少々の HTML で置き換えると、次のようになります。
1234
IF beresp.status == 404THEN 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 ガイドをご覧ください。
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。