カスタム VCL の概要
Fastly は、Varnish Configuration Language (VCL)のカスタマイズバージョンをサポートし、お客様の要件に合わせて Fastly サービス設定をカスタマイズします。
カスタム VCL スニペットは、Adobe Commerce サイトにアップロードされたアクティブな VCL バージョンに追加される VCL ロジックのブロックです。 カスタム VCL スニペットは、リクエストトラフィックに対する Fastly キャッシュサービスの応答方法を変更します。 例えば、カスタム VCL スニペットを追加して、指定されたクライアント IP アドレスからの要求トラフィックのみを許可することができます。 または、Adobe Commerce サイトに紹介スパムを送信することで知られている web サイトからのトラフィックをブロックするスニペットを作成します。
カスタム VCL スニペット(生成、コンパイル、すべての Fastly キャッシュに送信)が、サーバーを停止させることなく読み込みおよびアクティブ化されます。
Fastly では、次の 2 種類のカスタム VCL スニペットをサポートしています。
カスタム VCL スニペットとエッジ辞書およびアクセス制御リスト(ACL)を使用して、カスタム コードで使用するデータを保存することをお勧めします。
-
エッジディクショナリ- カスタム VCL スニペットから参照できるディクショナリコンテナに、キーと値のペアとしてデータを格納します。
-
エッジ ACL- カスタム VCL スニペットを使用して実装されたブロックまたは許可ルールのアクセス制御リストを定義するクライアント IP アドレス データを格納します
辞書と ACL データは、ネットワーク地域全体でアクセス可能な Fastly Edge ノードにデプロイされます。 また、データは、ステージング環境または実稼動環境用に VCL コードを再デプロイしなくても、ネットワーク全体で動的に更新できます。
チュートリアル
このチュートリアルと例では、Edge ディクショナリと Edge ACL を含んだ通常のカスタム VCL スニペットを使用して、Adobe Commerce用の Fastly サービス設定をカスタマイズする方法について説明します。 詳しくは、Fastly のドキュメントを参照してください。
- Fastly VCL のガイド- Fastly Varnish の実装、Fastly VCL の拡張機能、および Varnish と VCL の詳細を学習するためのリソースに関する情報です。
- Fastly VCL 参照- Fastly カスタム VCL およびカスタム VCL スニペットの開発とトラブルシューティングに関する詳細なプログラミング リファレンス。
カスタム VCL スニペットは、Adobe Commerce管理者から、または Fastly API を使用して作成および管理できます。
-
Adobe Commerce管理者—VCL の変更内容の検証、アップロード、Fastly サービス設定への適用を自動化するため、Adobe Commerce管理を使用してカスタム VCL スニペットを管理することをお勧めします。 また、Fastly サービス設定に追加されたカスタム VCL スニペットを、管理者で表示して編集することもできます。
-
Fastly API – 管理者にアクセスできない場合は、Fastly API を使用してカスタム VCL スニペットを管理します。 例えば、API を使用して、サイトがダウンしたときに Fastly サービス設定をトラブルシューティングしたり、カスタム VCL スニペットを追加したりします。 また、API を使用してのみ完了できる操作もあります。 たとえば、API を使用して、古い VCL バージョンを再アクティブ化したり、指定した VCL バージョンに含まれるすべての VCL スニペットを表示する必要があります。 参照: VCL スニペットの API クイックリファレンス.
VCL スニペットコードの例
次の例は、クライアントの IP アドレスでトラフィックをフィルタリングするカスタム VCL スニペット(JSON 形式)を示しています。
{
"service_id": "FASTLY_SERVICE_ID",
"version": "{Editable Version #}",
"name": "apply_acl",
"priority": "100",
"dynamic": "1",
"type": "hit",
"content": "if ((client.ip ~ {ACLNAME}) && !req.http.Fastly-FF){ error 403; }"
}
の VCL ロジック content
フィールドは、次のアクションを実行します。
-
受信 IP アドレスをチェックします。
client.ip
リクエストごとに -
に含まれる IP アドレスを持つすべてのリクエストをブロックします ACLNAME エッジ ACL、を返す
403 Forbidden
エラー
次の表に、カスタム VCL スニペットのキーデータの詳細を示します。 詳しくは、を参照してください VCL スニペット Fastly のドキュメントのを参照してください。
API_KEY
active
true
または false
. true の場合、スニペットまたはバージョンは使用中です。 バージョン番号を使用してアクティブなスニペットのクローンを作成します。content
dynamic
number
priority
次の範囲の数値 1
対象: 100
カスタム VCL スニペット コードを実行するタイミングを指定します。 優先度の値が小さいスニペットが最初に実行されます。 指定しない場合、 priority
デフォルト値: 100
.
優先順位の値がのカスタム VCL スニペット 5
これは、リクエストルーティング(ブロックおよび許可リストとリダイレクト)を実装する VCL コードに最適です。 優先度 100
は、デフォルトの VCL スニペットコードを上書きする場合に最適です。
すべて デフォルトの VCL スニペット Magento-Fastly モジュールに含まれる priority=50
.
- 次のような高い優先度を割り当てます
100
他のすべての VCL 関数の後にカスタム VCL コードを実行し、既定の VCL コードをオーバーライドします。
service_id
type
管理者からのカスタム VCL の管理
次のことができます カスタム VCL スニペットを追加する から Fastly 設定 > カスタム VCL スニペット 」セクションを選択します。
この カスタム VCL スニペット 表示には、管理者を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して次の操作を行います それらを管理.
次の例は、カスタム VCL スニペットを管理者から作成および管理する方法と、Fastly Edge モジュールおよび Edge 辞書を使用する方法を示しています。
API を使用した VCL の管理
次のウォークスルーでは、通常の VCL スニペットファイルを作成し、Fastly API を使用して Fastly サービス設定に追加する方法を示します。 からスニペットを作成および管理できます。 ターミナル アプリケーション。 特定の環境への SSH 接続は必要ありません。
前提条件:
-
Fastly サービスを使用するには、クラウドインフラストラクチャ環境でAdobe Commerceを設定します。 参照: Fastly の設定.
-
Fastly API 資格情報の取得 Fastly API へのリクエストを認証します。 正しい環境(ステージングまたは実稼動)の資格情報を取得していることを確認します。
-
cURL コマンドで使用できる bash 環境変数として、Fastly サービスの資格情報を保存します。
code language-bash export FASTLY_SERVICE_ID=<Service-ID>
code language-bash export FASTLY_API_TOKEN=<API-Token>
書き出された環境変数は、現在の bash セッションでのみ使用でき、ターミナルを閉じると失われます。 新しい値を書き出して変数を再定義できます。 Fastly に関連する、書き出された変数のリストを表示するには:
code language-bash export | grep FASTLY
VCL スニペットの追加
このチュートリアルでは、Fastly API を使用してカスタムスニペットを追加する基本的な手順を説明します。
前提条件
-
Fastly CDN を使用するように環境を設定する必要があります。 参照: Fastly サービスの設定.
-
Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 参照: Fastly モジュールのアップグレード.
-
Fastly サービスの環境設定を確認します。 参照: Fastly キャッシュを確認する.
-
ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。
手順 1:アクティブな VCL バージョンを探す
Fastly API の使用 バージョンを取得 アクティブな VCL のバージョン番号を取得する操作:
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
JSON 応答で、で返されたアクティブな VCL バージョン番号をメモします。 number
キー(例:) "number": 99
. VCL を編集用に複製する場合は、バージョン番号が必要です。
{
"testing": false,
"locked": true,
"number": 99,
"active": true,
"service_id": "872zhjyxhto5SIRb3GAE0",
"staging": false,
"created_at": "2019-01-29T22:38:53Z",
"deleted_at": null,
"comment": "Magento Module uploaded VCL",
"updated_at": "2019-01-29T22:39:06Z",
"deployed": false
}
以降の API リクエストで使用するために、アクティブなバージョン番号を bash 環境変数に保存します。
export FASTLY_VERSION_ACTIVE=<Version>
手順 2:アクティブな VCL バージョンとすべてのスニペットを複製する
カスタム VCL スニペットを追加または修正する前に、編集用にアクティブな VCL バージョンのコピーを作成する必要があります。 Fastly API の使用 クローン 操作:
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION_ACTIVE/clone -X PUT
JSON 応答では、バージョン番号が増分され、 アクティブ キー値はです false
. 新しい非アクティブな VCL バージョンは、ローカルで修正できます。
{
"testing": false,
"locked": false,
"number": 100,
"active": false,
"service_id": "vW2bLFWhhto5SIRb3GAE0",
"staging": false,
"created_at": "2019-01-29T22:38:53Z",
"deleted_at": null,
"comment": "Magento Module uploaded VCL",
"updated_at": "2019-01-29T22:39:06Z",
"deployed": false
}
以降のコマンドで使用するために、新しいバージョン番号を bash 環境変数に保存します。
export FASTLY_EDIT_VERSION=<Version>
手順 3:カスタム VCL スニペットの作成
カスタム VCL コードを作成し、次の内容と形式で JSON ファイルに保存します。
{
"name": "<name>",
"dynamic": "0",
"type": "<type>",
"priority": "100",
"content": "<code all in one line>"
}
値には次が含まれます。
-
name
- VCL スニペットの名前。 -
type
– 生成されたスニペットを挿入する場所を指定します。たとえば、次のような場所を指定します。init
(サブルーチンの上)とrecv
(サブルーチン内)。 参照: Fastly VCL スニペットオブジェクト値 これらの値について詳しくは、を参照してください。 -
priority
– 値1
対象:100
カスタム VCL スニペットコードを実行するタイミングを指定します。 値が小さいカスタム VCL スニペットが最初に実行されます。Fastly VCL モジュールのすべてのデフォルト VCL コードには、
priority
件中50
. アクションを最後に実行する場合、またはデフォルトの VCL コードをオーバーライドする場合は、次のように大きい数字を使用します100
. カスタム VCL スニペットコードをすぐに実行するには、次のように、優先度を低い値に設定します5
. -
content
– 改行なしで 1 行で実行する VCL コードのスニペット。 参照: カスタム VCL スニペットの例.
手順 4:Fastly 設定への VCL スニペットの追加
Fastly API の使用 スニペットを作成 カスタム VCL スニペットを VCL バージョンに追加する操作。
curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/snippet -H 'Content-Type: application/json' -X POST --data @<filename.json>
この <filename.json>
は、前の手順で準備したファイルの名前です。 各 VCL スニペットに対して、このコマンドを繰り返します。
を受け取った場合 500 Internal Server Error
fastly サービスからの応答。JSON ファイル構文を調べ、有効なファイルをアップロードしていることを確認します。
手順 5:カスタム VCL スニペットの検証とアクティブ化
カスタム VCL スニペットを追加すると、編集中の VCL バージョンにスニペットが挿入されます。 変更を適用するには、次の手順を実行して VCL スニペット コードを検証し、VCL バージョンをアクティブにします。
-
Fastly API の使用 vcl バージョンの検証 更新された VCL コードを検証する操作。
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/validate
Fastly API がエラーを返した場合は、問題を修正し、更新された VCL バージョンを再度検証します。
-
Fastly API の使用 アクティベート 新しい VCL バージョンをアクティブにする操作。
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_EDIT_VERSION/activate -X PUT
VCL スニペットの API クイックリファレンス
これらの API リクエストの例では、書き出された環境変数を使用して、Fastly で認証するための資格情報を提供しています。 これらのコマンドの詳細については、を参照してください Fastly API リファレンス.
-
アクティブな VCL バージョン番号を取得
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/active
-
サービスに接続されているすべての通常の VCL スニペットを一覧表示する
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet
-
個々のスニペットの確認
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name>
この
<snippet_name>
はスニペットの名前(例:)my_regular_snippet
. -
スニペットの更新
を変更する 準備された JSON ファイル そして、次のリクエストを送信します。
code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name> -H 'Content-Type: application/json' -X PUT --data @<filename.json>
-
個々の VCL スニペットを削除する
スニペットのリストを取得して、次を使用します
curl
削除する特定のスニペット名を指定したコマンド:code language-bash curl -H "Fastly-Key: $FASTLY_API_TOKEN" https://api.fastly.com/service/$FASTLY_SERVICE_ID/version/$FASTLY_VERSION/snippet/<snippet_name> -X DELETE
-
の値のオーバーライド デフォルトの Fastly VCL コード
更新された値でスニペットを作成して、の優先度を割り当てます。
100
.