ブロック要求のカスタム 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 スニペットコードは、両方の環境に適用されます。
- Adminにログインします。
- ストア >設定> 設定 > 詳細 > システム > フルページキャッシュ > Fastly設定に移動します。
- Edge ACL セクションを展開します。
- 「ACLを追加」をクリックして、リストを作成します。 この例では、リストに「ブロックリスト」という名前を付けます。
- リストにIP アドレスの値を入力します。 このリストに追加されたクライアント IP アドレスはブロックされ、サイトにアクセスできません。
- 必要に応じて、「否定」チェックボックスを選択します。
VCL スニペットコードでは、名前でEdge ACLを参照します。
ブロックリスト用のカスタム VCLの作成
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 スニペットの追加
-
管理者に ログインします。
-
ストア / 設定/構成 / 詳細 / システムをクリックします。
-
フルページキャッシュ > Fastly設定 > カスタム VCL スニペットを展開します。
-
「カスタムスニペットを作成」をクリックします。
-
VCL スニペット値を追加します。
-
名前 —
blocklist -
種類 —
recv -
優先度 —
5 -
VCL スニペットコンテンツを追加します。
code language-conf if ( client.ip ~ blocklist) { error 403 "Forbidden"; }
-
-
作成をクリックして、名前パターン
type_priority_name.vclのVCL スニペットファイルを生成します(例:recv_5_blocklist.vcl) -
ページがリロードされたら、「Fastly設定」セクションの「VCLをFastlyにアップロード」をクリックして、ファイルをFastly サービス設定に追加します。
-
アップロード後、ページ上部の通知に従ってキャッシュを更新します。
アップロードプロセス中に、VCL コードの更新バージョンを迅速に検証します。 検証が失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCLをもう一度アップロードします。
ブロッキング要求の追加VCL例
次の例は、ACL リストの代わりにインライン条件ステートメントを使用してリクエストをブロックする方法を示しています。
- 名前:
<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\";}"
}
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\";}"
}
$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom ディレクトリにスニペットを追加できます。 このディレクトリのスニペットは、Commerce管理者で_VCLをFastly_にアップロードをクリックすると、自動的にアップロードされます。 Magento 2用Fastly CDN モジュールの自動カスタム VCL スニペットのデプロイメント を参照してください。カスタム VCL スニペットの変更
-
管理者に ログイン します。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、編集するスニペットの横にある設定アイコンをクリックします。
-
ページのリロード後、「Fastly 設定 _セクションのFastly に VCL をアップロード_ をクリックします。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
カスタム VCL スニペットの削除
-
管理者に ログイン します。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。
-
次のモーダルウィンドウで、「DELETE」をクリックし 新しいバージョンをアクティベートします。