リファラルスパムをブロック
次の例は、カスタム VCL スニペットを使用して Fastly Edge Dictionary を設定し、クラウドインフラストラクチャサイト上のAdobe Commerceからの紹介スパムをブロックする方法を示しています。
前提条件:
-
Fastly CDN を使用するように環境を設定する必要があります。 詳しくは、Fastly サービスの設定を参照してください。
-
Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 Fastly モジュールのアップグレードを参照してください。
-
Fastly サービスの環境設定を確認します。 Fastly キャッシュの確認を参照してください。
-
ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。
-
サイトのログで偽のリファラル URL を確認し、ブロックするドメインのリストを作成します。
リファラーブロックリストの作成
Edge ディクショナリは、VCL スニペットの処理中に、VCL 関数からアクセス可能なキーと値のペアを作成します。 この例では、ブロックするリファラー web サイトのリストを提供するエッジ辞書を作成します。
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/Edgeの辞書 を展開します。
-
辞書コンテナの作成:
-
コンテナを追加 をクリックします。
-
コンテナ ページで 辞書名—
referrer_blocklist
を入力します。 -
変更後にアクティベート を選択して、編集中の Fastly サービス設定のバージョンに変更をデプロイします。
-
アップロード をクリックして、Fastly サービス設定に辞書を添付します。
-
-
ブロックするドメイン名のリストを
referrer_blocklist
の辞書に追加します。-
referrer_blocklist
辞書の「設定」アイコンをクリックします。 -
キーと値のペアを新しい辞書に追加して保存します。 この例では、各 Key はブロックするリファラー URL のドメイン名で、Value は
true
です。 -
「キャンセル」をクリックして、システム設定ページに戻ります。
-
-
「設定を保存」をクリックします。
-
ページ上部の通知に従ってキャッシュを更新します。
Edge辞書について詳しくは、Fastly ドキュメントの Edge辞書の作成と使用および カスタム VCL スニペットを参照してください。
リファラースパムをブロックするカスタム VCL スニペットの作成
次のカスタム VCL スニペットコード(JSON 形式)は、リクエストをチェックしてブロックするロジックを示しています。 VCL スニペットは、リファラー web サイトのホストをヘッダーに取り込み、ホスト名を referrer_blocklist
ディクショナリ内の URL のリストと比較します。 ホスト名が一致する場合、リクエストは 403 Forbidden
エラーでブロックされます。
{
"name": "block_bad_referrer",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "if (req.http.Referer ~ \"^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$\") {set req.http.Referer-Host = re.group.2;}if (table.lookup(referrer_blocklist, req.http.Referer-Host)) {error 403 \"Forbidden\";}"
}
この例に基づいてスニペットを作成する前に、値を確認して、変更が必要かどうかを判断してください。
-
name
— VCL スニペットの名前。 この例では、block_bad_referrer
を使用します。 -
dynamic
– 値 0 は、Fastly 設定用にバージョン管理された VCL にアップロードする 通常のスニペットを示します。 -
priority
— VCL スニペットを実行するタイミングを指定します。 優先度は、デフォルトのMagentoVCL スニペット(magentomodule_*
)に優先度 50 が割り当てられる前に、このスニペットコードを実行する5
要があります。 各カスタムスニペットの優先度を、スニペットを実行するタイミングに応じて 50 より高くまたは低く設定します。 優先度の低いスニペットが最初に実行されます。 -
「
type
」 - VCL バージョンにスニペットを挿入する場所を指定します。 この例では、VCL スニペットがrecv
スニペットです。 スニペットを VCL バージョンに挿入すると、既定の Fastly VCL コードの下で、オブジェクトの上にあるvcl_recv
サブルーチンに追加されます。 -
content
– 改行なしで 1 行で実行する VCL コードのスニペット。
環境のコードを確認して更新した後、次のいずれかの方法を使用して、カスタム VCL スニペットを Fastly サービス設定に追加します。
-
カスタム VCL スニペットを管理者から追加します。 管理者にアクセスできる場合は、この方法をお勧めします。 (Fastly バージョン 1.2.58 以降が必要です。)
-
JSON コードの例をファイル(例:
allowlist.json
)に保存して、Fastly API を使用してアップロードします。 管理者にアクセスできない場合は、この方法を使用します。
カスタム VCL スニペットの追加
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
カスタムスニペットを作成 をクリックします。
-
VCL スニペットの値を追加します。
-
名前 —
block_bad_referrer
-
種類 —
recv
-
優先度 —
5
-
VCL スニペットコンテンツ —
code language-conf if (req.http.Referer ~ "^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$") { set req.http.Referer-Host = re.group.2; } if (table.lookup(referrer_blocklist, req.http.Referer-Host)) { error 403 "Forbidden"; }
-
-
作成 をクリックします。
-
ページのリロード後、「Fastly 設定 セクションの Fastly に VCL をアップロード をクリックします。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
Fastly は、アップロード処理中に更新された VCL バージョンを検証します。 検証に失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCL を再度アップロードします。
$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom
ディレクトリにスニペットを追加できます。 Commerce Admin で VCL を Fastly にアップロード をクリックすると、このディレクトリ内のスニペットが自動的にアップロードされます。 Magento 2 ドキュメントの Fastly CDN モジュールの 自動カスタム VCL スニペットのデプロイメントを参照してください。カスタム VCL スニペットの変更
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、編集するスニペットの横にある設定アイコンをクリックします。
-
ページのリロード後、「Fastly 設定 _セクションの Fastly に VCL をアップロード_ をクリックします。
-
アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。
カスタム VCL スニペットの削除
-
管理者に ログインします。
-
ストア/設定/設定/詳細/システム をクリックします。
-
フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。
-
アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。
-
次のモーダルウィンドウで、「DELETE」をクリックし 新しいバージョンをアクティベートします。