リクエストをブロックするカスタム 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 スニペットコードは、両方の環境に適用されます。
- 管理者にログインします。
- に移動します。 ストア > 設定 > 設定 > 詳細 > システム > フルページキャッシュ > Fastly 設定.
- を展開します。 エッジ ACL セクション。
- クリック ACL を追加 リストを作成します。 この例では、リストに「ブロックリスト」という名前を付けます。
- リストに IP アドレス値を入力します。 このリストに追加されたクライアントの IP アドレスはすべてブロックされ、サイトにアクセスできません。
- オプションで、 否定 必要に応じてチェックボックスをオンにします。
VCL スニペットコードでは、エッジ ACL を名前で参照します。
ブロックリストのカスタム VCL の作成
エッジ 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 スニペットを管理者から追加します。. 管理者にアクセスできる場合は、この方法をお勧めします。 (必須 Fastly バージョン 1.2.58 (またはそれ以降)。
-
JSON コードの例をファイルに保存します(例:
blocklist.json
)および fastly API を使用してアップロードします. 管理者にアクセスできない場合は、この方法を使用します。
カスタム VCL スニペットの追加
-
ログイン を管理者に送信します。
-
クリック ストア > 設定 > 設定 > 詳細 > システム.
-
を展開 フルページキャッシュ > Fastly 設定 > カスタム VCL スニペット.
-
クリック カスタムスニペットの作成.
-
VCL スニペットの値を追加します。
-
名前 —
blocklist
-
タイプ —
recv
-
優先度 —
5
-
を追加 VCL スニペットコンテンツ:
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
クリック 作成 名前が pattern の VCL スニペット ファイルを生成するには
type_priority_name.vcl
、例:recv_5_blocklist.vcl
-
ページの再読み込み後、 Fastly への VCL のアップロード が含まれる Fastly 設定 Fastly サービス設定にファイルを追加するためのセクションです。
-
アップロード後、ページ上部の通知に従ってキャッシュを更新します。
Fastly は、アップロードプロセス中に VCL コードの更新バージョンを検証します。 検証に失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCL を再度アップロードします。
リクエストをブロックする VCL の追加例
次の例は、ACL リストの代わりにインライン条件ステートメントを使用してリクエストをブロックする方法を示しています。
参照: 動的 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\";}"
}
VCL コード例:HTTP ユーザーエージェントリクエストヘッダーによるブロック
{
"name": "blockbyuseragent",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if ( req.http.User-Agent ~ \"(UCBrowser|MQQBrowser|LieBaoFast|Mb2345Browser)\" ) {error 405 \"Not allowed\";}"
}
$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom
環境内のディレクトリ。 クリックすると、このディレクトリ内のスニペットが自動的にアップロードされます vcl の Fastly へのアップロード Commerce Admin. 参照: カスタム VCL スニペットの導入を自動化 Magento 2 用 Fastly CDN モジュールのドキュメントを参照してください。カスタム VCL スニペットの変更
-
ログイン を管理者に送信します。
-
クリック ストア > 設定 > 設定 > 詳細 > システム.
-
を展開 フルページキャッシュ > Fastly 設定 > カスタム VCL スニペット.
-
が含まれる アクション 列で、編集するスニペットの横にある「設定」アイコンをクリックします。
-
ページの再読み込み後、 Fastly への VCL のアップロード が含まれる Fastly 設定 セクション。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
カスタム VCL スニペットの削除
-
ログイン を管理者に送信します。
-
クリック ストア > 設定 > 設定 > 詳細 > システム.
-
を展開 フルページキャッシュ > Fastly 設定 > カスタム VCL スニペット.
-
が含まれる アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。
-
次のモーダルウィンドウで、 DELETE 新しいバージョンをアクティブ化します。