Fastly(BYOCDN)
この設定では、エージェントトラフィック(AI ボットおよび LLM ユーザーエージェントからのリクエスト)を Edge での最適化バックエンドサービス(live.edgeoptimize.net)にルーティングします。 人間の訪問者と SEO ボットは、通常どおりオリジンから引き続き提供されます。 設定をテストするには、設定が完了したら、応答のヘッダー x-edgeoptimize-request-id を探します。
前提条件
Fastly VCL ルールを設定する前に、次の要件を満たしていることを確認してください。
- ドメインの Fastly へのアクセス権。
- Adobe Brand Visibility UI から取得された Edge Optimize API キー。手順について詳しくは、API キーの取得を参照してください。
- (オプション)ステージングルーティングをテストするには、Staging API キーを参照してください。
設定
Fastly サービスに次の 3 つの VCL スニペットを追加します。 これらのスニペットは、エージェント型リクエストを Edge での最適化にルーティングする処理、キャッシュキーの分離、デフォルトのオリジンへのフェイルオーバーを処理します。
vcl_recv スニペット
unset req.http.x-edgeoptimize-url;
unset req.http.x-edgeoptimize-config;
unset req.http.x-edgeoptimize-api-key;
unset req.http.x-edgeoptimize-fetcher-key; # Optional (required only in case of WAF)
if (!req.http.x-edgeoptimize-request
&& req.http.user-agent ~ "(?i)(AdobeEdgeOptimize-AI|ChatGPT-User|GPTBot|OAI-SearchBot|PerplexityBot|Perplexity-User|ClaudeBot|Claude-User|Claude-SearchBot)") {
set req.http.x-forwarded-host = req.http.host; # required for identifying the original host
set req.http.x-edgeoptimize-url = req.url; # required for identifying the original url
set req.http.x-edgeoptimize-config = "LLMCLIENT=TRUE;"; # required for cache key
set req.http.x-edgeoptimize-api-key = "<YOUR API KEY>"; # required for identifying the client
set req.http.x-edgeoptimize-fetcher-key = "<YOUR FETCHER KEY>"; # Optional (required only in case of WAF)
set req.backend = F_EDGE_OPTIMIZE;
return(lookup);
}
vcl_hash スニペット
if (req.http.x-edgeoptimize-config) {
set req.hash += "edge-optimize";
set req.hash += req.http.x-edgeoptimize-config;
}
vcl_deliver スニペット
if (req.http.x-edgeoptimize-config && resp.status >= 400) {
set req.http.x-edgeoptimize-request = "failover";
restart;
}
if (req.http.x-edgeoptimize-config) {
return(deliver);
}
if (!req.http.x-edgeoptimize-config && req.http.x-edgeoptimize-request == "failover") {
set resp.http.x-edgeoptimize-fo = "1";
}
フェイルオーバー
vcl_deliver スニペットは、フェイルオーバーを自動的に処理します。 Edge での最適化が 4XX または 5XX エラーを返した場合、リクエストは再開され、デフォルトのオリジンにルーティングされるので、エンドユーザーは応答を引き続き受信できます。 フェイルオーバー応答には、x-edgeoptimize-fo: 1 ヘッダーが含まれます。
2XX が返される4XX または 5XX が返されるx-edgeoptimize-fo: 1 を含みます。ファイアウォールルールで Edge での最適化を許可(任意)
CDN で WAF または Bot Manager を使用している場合:
-
Optimize at Edge サービスがオリジンコンテンツを取得できるよう、WAF または Bot Manager で
*AdobeEdgeOptimize/1.0*ユーザーエージェントを許可リストに追加します。 -
ファイアウォールでユーザーエージェント以外の追加の検証が必要な場合は、シークレット(例:
openssl rand -hex 32)を生成し、次の操作を行ってください。- 他の
x-edgeoptimize-*ヘッダーとともに、ルーティングルールにシークレットを含むx-edgeoptimize-fetcher-keyを追加します。 x-edgeoptimize-fetcher-keyが同じシークレットと一致するリクエストを許可するよう、WAF または Bot Manager のルールを追加します。
- 他の
-
Edge での最適化は、このヘッダーをそのまま転送するため、お客様が鍵のライフサイクル全体を管理することになります。
設定の検証
設定が完了したら、ボットトラフィックが Edge での最適化にルーティングされていることと、人間のトラフィックに影響がないことを確認します。
1. ボットトラフィックをテスト(最適化する必要があります)
エージェント型ユーザーエージェントを使用して、AI ボットリクエストをシミュレートします。
curl -svo /dev/null https://www.example.com/page.html \
--header "user-agent: chatgpt-user"
正常な応答には、リクエストが Edge での最適化を経由してルーティングされたことを確認する x-edgeoptimize-request-id ヘッダーが含まれます。
< HTTP/2 200
< x-edgeoptimize-request-id: 50fce12d-0519-4fc6-af78-d928785c1b85
2. 人間のトラフィックをテスト(影響を受けません)
通常の人間によるブラウザーリクエストをシミュレートします。
curl -svo /dev/null https://www.example.com/page.html \
--header "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
応答には、x-edgeoptimize-request-id ヘッダーを含め ない でください。 ページのコンテンツと応答時間は、Edge での最適化を有効にする前と同じ状態を維持する必要があります。
3. 2 つのシナリオを区別する方法
x-edgeoptimize-request-idx-edgeoptimize-fo1)トラフィックルーティングのステータスは、Adobe Brand Visibility UI でも確認できます。顧客設定に移動し、「CDN 設定」タブを選択します。
利用可能な機会、自動最適化ワークフロー、FAQ など、Optimize at Edge について詳しくは、Optimize at Edge の概要に戻ってご確認ください。