ブロック要求のカスタム 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 アドレスをブロックするためのEdge ACLの作成

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

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

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

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

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

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

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

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

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

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

  • name: VCL スニペットの名前。 この例では、名前blocklistを使用しました。

  • priority: VCL スニペットが実行されるタイミングを決定します。 管理者要求が許可されたIP アドレスから送信されているかどうかを即座に実行して確認する優先度は5です。 スニペットは、デフォルトのMagento VCL スニペット(magentomodule_*)のいずれかが優先度50に割り当てられる前に実行されます。 スニペットを実行するタイミングに応じて、各カスタムスニペットの優先度を50より高くまたは低く設定します。 優先度の低いスニペットが最初に実行されます。

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

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

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

  • 管理者からカスタム VCL スニペットを追加します。 管理者にアクセスできる場合は、この方法をお勧めします。 (Fastly バージョン 1.2.58以降が必要です)

  • JSON コードの例をファイル (例:blocklist.json)に保存し、Fastly API🔗を使用して アップロードします。 管理者にアクセスできない場合は、この方法を使用します。

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

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

  2. ストア / 設定/構成 / 詳細 / システム​をクリックします。

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

  4. カスタムスニペットを作成」をクリックします。

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

    • 名前blocklist

    • 種類recv

    • 優先度5

    • VCL スニペットコンテンツを追加します。

      code language-conf
      if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
      
  6. 作成​をクリックして、名前パターン type_priority_name.vclのVCL スニペットファイルを生成します(例:recv_5_blocklist.vcl

  7. ページがリロードされたら、「Fastly設定」セクションの「VCLをFastly​にアップロード」をクリックして、ファイルをFastly サービス設定に追加します。

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

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

ブロッキング要求の追加VCL例

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

WARNING
これらの例では、VCL コードはJSON ペイロードとしてフォーマットされており、ファイルに保存し、Fastly API リクエストで送信できます。 Admin🔗からVCL スニペットを送信するか、Fastly APIを使用してJSON文字列として送信できます。 JSON文字列でFastly APIを使用する際の検証エラーを防ぐには、特殊文字をエスケープするためにバックスラッシュを使用する必要があります。
NOTE
管理者からVCL スニペットを送信する場合は、サンプル VCL コードから個々の値を抽出し、対応するフィールドにに入力します。 例:
  • 名前:<name of the VCL>
  • 動的:<0/1>
  • 種類:<type>
  • 優先度:<priority>
  • コンテンツ:<content>

Fastly VCL ドキュメントの動的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 スニペットを使用する代わりに、Adobe Commerce on cloud infrastructure AdminのFastly ​ ブロッキング ​機能を使用して、国コードまたは国コードのリストによるブロッキングを設定できます。

VCL コードサンプル:HTTP User-Agent リクエストヘッダーによるブロック

{
  "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 ディレクトリにスニペットを追加できます。 このディレクトリのスニペットは、Commerce管理者で​_VCLをFastly_​にアップロードをクリックすると、自動的にアップロードされます。 Magento 2用Fastly CDN モジュールの自動カスタム VCL スニペットのデプロイメント ​を参照してください。

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

  1. 管理者に ​ ログイン ​ します。

  2. ストア/設定/設定/詳細/システム をクリックします。

  3. フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。

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

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

  5. ページのリロード後、「Fastly 設定 _セクションの​Fastly に VCL をアップロード_ をクリックします。

  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
commerce-on-cloud-help-cloud-guide