リクエストをブロックするカスタム VCL

Magento 2 の Fastly CDN モジュールを使用して、ブロックする IP アドレスのリストを含む Edge ACL を作成できます。 次に、このリストを VCL スニペットと一緒に使用して、着信リクエストをブロックできます。 このコードは、受信リクエストの IP アドレスを確認します。 ACL リストに含まれる IP アドレスと一致する場合、Fastly は、リクエストがサイトにアクセスするのをブロックし、を返します。 403 Forbidden error. その他すべてのクライアント IP アドレスへのアクセスが許可されます。

前提条件:

  • Fastly CDN を使用するように環境を設定する必要があります。 参照: Fastly サービスの設定.

  • Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 参照: Fastly モジュールのアップグレード.

  • Fastly サービスの環境設定を確認します。 参照: Fastly キャッシュを確認する.

  • ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。

  • ブロックするクライアント IP アドレスのリスト

クライアント IP アドレスをブロックするエッジ ACL を作成します

エッジ ACL を作成して、ブロックする IP アドレスのリストを定義します。 ACL を作成したら、それをカスタム VCL スニペットで使用して、ステージングまたは実稼動サイトへのアクセスを管理できます。

両方の環境で同じ名前のエッジ ACL を作成して、ステージングサイトと実稼動サイトの両方のアクセスを管理します。 VCL スニペットコードは、両方の環境に適用されます。

  1. 管理者にログインします。
  2. に移動します。 ストア > 設定 > 設定 > 詳細 > システム > フルページキャッシュ > Fastly 設定.
  3. を展開します。 エッジ ACL セクション。
  4. クリック ACL を追加 リストを作成します。 この例では、リストに「ブロックリスト」という名前を付けます。
  5. リストに IP アドレス値を入力します。 このリストに追加されたクライアントの IP アドレスはすべてブロックされ、サイトにアクセスできません。
  6. オプションで、 否定 必要に応じてチェックボックスをオンにします。

VCL スニペットコードでは、エッジ ACL を名前で参照します。

ブロックリストのカスタム VCL の作成

NOTE
この例では、上級ユーザーに対して、Fastly サービスにアップロードするカスタムブロッキングルールを設定する VCL コードスニペットの作成方法を示します。 Adobe Commerce管理者が次を使用して、国に基づいてをブロックリスト許可リストに加えるまたは設定できます ブロック Magento 2 用 Fastly CDN モジュールで使用できる機能。

エッジ ACL を定義した後、それを使用して、ACL で指定された IP アドレスへのアクセスをブロックする VCL スニペットを作成できます。 ステージング環境と実稼動環境の両方で同じ VCL スニペットを使用できますが、スニペットは各環境に個別にアップロードする必要があります。

次のカスタム VCL スニペットコード(JSON 形式)は、ブロックリスト ACL 内のアドレスと一致するクライアント IP アドレスを持つ受信リクエストをブロックするロジックを示しています。

{
  "name": "blocklist",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.ip ~ blocklist) { error 403 \"Forbidden\"; }"
}

この例に基づいてスニペットを作成する前に、値を確認して、変更が必要かどうかを判断してください。

  • name:VCL スニペットの名前。 以下の例では、という名前を使用しています。 blocklist.

  • priority:VCL スニペットを実行するタイミングを指定します。 優先度は次のとおりです 5 を使用して直ちに管理リクエストが許可された IP アドレスからのリクエストであるかどうかを確認します。 このスニペットは、デフォルトのMagentoVCL スニペット(magentomodule_*)に優先度 50 を割り当てました。 各カスタムスニペットの優先度を、スニペットを実行するタイミングに応じて 50 より高くまたは低く設定します。 優先度の低いスニペットが最初に実行されます。

  • type:生成された VCL コード内のスニペットの場所を決定する VCL スニペットのタイプを指定します。 この例では、を使用します recv:VCL コードを vcl_recv サブルーチン。ボイラープレート VCL の下、オブジェクトの上にあります。 を参照してください。 Fastly VCL スニペットの参照 を入力します。

  • content:実行する VCL コードのスニペット。クライアントの IP アドレスを確認します。 IP が Edge ACL に含まれている場合は、次のアドレスからのアクセスがブロックされます。 403 Forbidden web サイト全体のエラー。 その他すべてのクライアント IP アドレスへのアクセスが許可されます。

環境のコードを確認して更新した後、次のいずれかの方法を使用して、カスタム VCL スニペットを Fastly サービス設定に追加します。

カスタム VCL スニペットの追加

  1. ログイン を管理者に送信します。

  2. クリック ストア > 設定 > 設定 > 詳細 > システム.

  3. を展開 フルページキャッシュ > Fastly 設定 > カスタム VCL スニペット.

  4. クリック カスタムスニペットの作成.

  5. VCL スニペットの値を追加します。

    • 名前blocklist

    • タイプrecv

    • 優先度5

    • を追加 VCL スニペットコンテンツ:

      code language-conf
      if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
      
  6. クリック 作成 名前が pattern の VCL スニペット ファイルを生成するには type_priority_name.vcl、例: recv_5_blocklist.vcl

  7. ページの再読み込み後、 Fastly への VCL のアップロード が含まれる Fastly 設定 Fastly サービス設定にファイルを追加するためのセクションです。

  8. アップロード後、ページ上部の通知に従ってキャッシュを更新します。

Fastly は、アップロードプロセス中に VCL コードの更新バージョンを検証します。 検証に失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCL を再度アップロードします。

リクエストをブロックする VCL の追加例

次の例は、ACL リストの代わりにインライン条件ステートメントを使用してリクエストをブロックする方法を示しています。

WARNING
これらの例では、VCL コードは JSON ペイロードとしてフォーマットされ、ファイルに保存して Fastly API リクエストで送信できます。 を送信できます 管理者からの VCL スニペットまたは、Fastly API を使用して JSON 文字列として返します。 JSON 文字列で Fastly API を使用する場合に検証を防ぐには、バックスラッシュを使用して特殊文字をエスケープする必要があります。

参照: 動的 VCL スニペットの使用 Fastly VCL ドキュメントを参照してください。

VCL コード サンプル:国コードによるブロック

この例では、IP アドレスに関連付けられた国に、2 文字の ISO 3166-1 国コードを使用しています。

{
  "name": "blockbycountrycode",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( client.geo.country_code == \"HK\" ) { error 405 \"Not allowed\";}"
}
NOTE
カスタム VCL スニペットを使用する代わりに、Fastly を使用できます。 ブロック クラウドインフラストラクチャー管理のAdobe Commerceの機能を使用して、国コードまたは国コードのリスト別のブロックを設定できます。

VCL コード例:HTTP ユーザーエージェントリクエストヘッダーによるブロック

{
  "name": "blockbyuseragent",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
NOTE
カスタム VCL スニペットを手動でアップロードする代わりに、スニペットを $MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom 環境内のディレクトリ。 クリックすると、このディレクトリ内のスニペットが自動的にアップロードされます vcl の Fastly へのアップロード Commerce Admin. 参照: カスタム VCL スニペットの導入を自動化 Magento 2 用 Fastly CDN モジュールのドキュメントを参照してください。

カスタム VCL スニペットの変更

  1. ログイン を管理者に送信します。

  2. クリック ストア > 設定 > 設定 > 詳細 > システム.

  3. を展開 フルページキャッシュ > Fastly 設定 > カスタム VCL スニペット.

    カスタム VCL スニペットの管理

  4. が含まれる アクション 列で、編集するスニペットの横にある「設定」アイコンをクリックします。

  5. ページの再読み込み後、 Fastly への VCL のアップロード が含まれる Fastly 設定 セクション。

  6. アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。

WARNING
この カスタム VCL スニペット UI オプションには、Adobe Commerce管理者を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して以下を行います それらを管理.

カスタム VCL スニペットの削除

  1. ログイン を管理者に送信します。

  2. クリック ストア > 設定 > 設定 > 詳細 > システム.

  3. を展開 フルページキャッシュ > Fastly 設定 > カスタム VCL スニペット.

    カスタム VCL スニペットの管理

  4. が含まれる アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。

  5. 次のモーダルウィンドウで、 DELETE 新しいバージョンをアクティブ化します。

WARNING
この カスタム VCL スニペット UI オプションには、Adobe Commerce管理者を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して以下を行います それらを管理.
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26