オリジンサーバーに送信されないカスタムレスポンス

Fastly は、オリジンサーバーにヒットさせたくない特定のリクエストに対して、カスタムレスポンスを送信することができます。

クイックレスポンスを作成する

Fastly では robots.txt ファイルの作成や404と503のエラーページを作成するのためのレスポンスをすばやく有効にして設定できる機能が用意されています。詳細については、robots.txtファイルの作成とカスタマイズ、およびカスタムレスポンスを使用したエラーページの作成に関するガイドをご参照ください。

高度なレスポンスを作成する

高度なレスポンスを作成して、HTTP ステータスコード、MIME タイプ、レスポンスの内容を指定することができます。例えば、キャッシングを画像やスクリプトを含む URL サブツリーに制限したければ、HTTP 404 Not Found または /Content/* 以外のリクエストに対して Fastly が /Scripts/* レスポンスを返すように設定することができます。この例の実装方法を説明するために、レスポンスとそれに対応するリクエストの条件の作成方法を紹介します。

以下の手順に従って、高度なレスポンスを作成します。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインでの検索が行えます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. Content をクリックします。Content ページが表示されます。
  5. Set up advanced response ボタンをクリックします。Create a synthetic response ページが表示されます。

    Create a synthetic response ウィンドウ

  6. 以下の要領で Create a synthetic response ページの各フィールドに入力します。
    • Name フィールドに、人間可読なレスポンス名を入力します。例: Return Not Found
    • Status メニューから、クライアントに返す HTTP コードを選択します。例えば 404 Not Foundなど。
    • MIME Type フィールドに、レスポンスの MIME タイプを入力します。例えば text/htmlなど。
    • Response フィールドに、クライアントに返すプレーンテキストまたは HTML コンテンツを入力します。例: Page not found
  7. Create ボタンをクリックし、レスポンスを作成します。新しいレスポンスが Content ページの Responses セクションに表示されます。

    ページが見つからない場合に返すシンセティックレスポンスの例

リクエスト条件を作成する

以下の手順に従って、先ほど作成したレスポンスにリクエスト条件をアタッチします。

  1. 先ほど作成したレスポンスの横にある Attach a condition リンクをクリックします。Add a condition ウィンドウが表示されます。

    条件を追加するウィンドウの例

  2. Create a new condition ボタンをクリックします。 Create a new condition ウィンドウが表示されます。

    Responses エリアのリクエスト条件メニュー

  3. 以下の要領で Create a new condition 設定画面の各フィールドに入力します。
    • Type メニューから作成する条件の種類を選択します。
    • Name フィールドに、分かりやすい条件の名前を入力します。例えば Return Not Foundなど。
    • Apply if フィールドに、VCL if ステートメントに挿入するリクエスト条件を入力します。例えば など! ( req.url ~ "^/(Content|Scripts)/" )。リクエスト条件の例は、以下をご覧ください。
  4. Save and apply to ボタンをクリックします。Responses セクションに、レスポンスの使用に必要な条件が表示されます。

    ページ未検出エラーをトリガーするレスポンス条件

  5. Activate ボタンをクリックして設定変更をデプロイします。

リクエスト条件の例

URL が指定したマスクに一致しない場合にのみ応答します。この例でのマスクは、/Content/* または /Scripts/* です。

1
! (req.url ~ "^/(Content|Scripts)/")

URL が /secret/* に一致したか、Microsoft Word または Excel ドキュメントである場合にのみ応答します (ファイル拡張子が *.doc または *.xls)。

1
! (req.url ~ "^/secret/" || req.url ~ "\.(xls|doc)$")

POST と PUT の HTTP リクエストを無視します。

1
req.method == "POST" || req.method == "PUT"

user-agent "annoying_robot" を使用してスパイダーやクローラーを拒否します。

1
req.http.user-agent ~ "annoying_robot"

指定した IP からの接続を防ぎます。この例での IP は 225.0.0.1 です。

1
client.ip == "225.0.0.1"

地理情報に関連する変数を使用し、指定した場所からのトラフィックをブロックします (例:中国)。

1
client.geo.country_code == "CN"

client.ip240.24.0.0/16 などの CIDR 範囲にマッチさせます (このためには、まず VCL で ACL オブジェクトを作成しておく必要があります)。

1
client.ip ~ ipRangeObject
Back to Top