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

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

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

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

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

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

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

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して 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 ウィンドウが表示されます。

    Add a condition ウィンドウの例

  2. Create a new condition ボタンをクリックします。Create a new condition ウィンドウが開きます。

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

  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