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

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 をクリックします。
  5. Set up advanced 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 リンクをクリックします。

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

  2. 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 セクションに、レスポンスの使用に必要な条件が表示されます。

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

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

リクエスト条件の例

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

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

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

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

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

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

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

req.http.user-agent ~ "annoying_robot"

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

client.ip == "225.0.0.1"

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

client.geo.country_code == "CN"

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

client.ip ~ ipRangeObject

翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。