Fastly (BYOCDN)
この設定により、エージェント型トラフィック(AI ボットおよびLLM ユーザーエージェントからのリクエスト)がEdge Optimize バックエンドサービス(live.edgeoptimize.net)にルーティングされます。 通常どおり、人間の訪問者とSEO ボットは、元のページから引き続き提供されます。 設定をテストするには、設定が完了した後、応答でヘッダーx-edgeoptimize-request-idを探します。
前提条件
Fastly VCL ルールを設定する前に、次のことを確認してください。
- ドメイン用にFastlyにアクセスします。
- LLM Optimizer UIから取得したEdge Optimize API キー。 手順については、API キーの取得を参照してください。
- (オプション)ステージング ルーティングをテストするには、 ステージング API キーを参照してください。
設定
次の3つのVCL スニペットをFastly サービスに追加します。 これらのスニペットは、Edge Optimizeへのエージェント型リクエストのルーティング、キャッシュキーの分離、デフォルトのオリジンへのフェイルオーバーを処理します。
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)") {
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;
}
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";
set req.backend = F_Default_Origin;
restart;
}
if (!req.http.x-edgeoptimize-config && req.http.x-edgeoptimize-request == "failover") {
set resp.http.x-edgeoptimize-fo = "1";
}
フェールオーバー
vcl_deliver スニペットは、フェールオーバーを自動的に処理します。 Edge Optimizeが4XXまたは5XX エラーを返した場合、リクエストは再起動され、デフォルトのオリジンにルーティングされ、エンドユーザーは引き続き応答を受け取ります。 フェールオーバー応答には、x-edgeoptimize-fo: 1 ヘッダーが含まれます。
2XXを返します4XXまたは5XXを返しますx-edgeoptimize-fo: 1が含まれています。ファイアウォール ルールを使用してEdgeで最適化を許可する(オプション)
CDNでWAFまたはBot Managerを使用している場合:
-
WAFまたはBot Managerで
*AdobeEdgeOptimize/1.0*ユーザーエージェントを許可リストに加えるして、Optimize at Edge サービスがオリジンコンテンツを取得できるようにします。 -
ファイアウォールでユーザーエージェント以外の追加の検証が必要な場合は、秘密鍵(例:
openssl rand -hex 32)を生成し、次の操作を行います。- ルーティングルールのシークレットを他の
x-edgeoptimize-*ヘッダーと共にx-edgeoptimize-fetcher-keyを追加します。 - WAFまたはBot Manager ルールを追加して、
x-edgeoptimize-fetcher-keyが同じシークレットと一致するリクエストを許可します。
- ルーティングルールのシークレットを他の
-
Edgeで最適化すれば、このヘッダーをそのまま転送できます。ユーザーは鍵のライフサイクル全体を所有しています。
設定を確認
設定が完了したら、ボットトラフィックがEdge Optimizeにルーティングされ、人間のトラフィックが影響を受けないことを確認します。
1. ボットトラフィックのテスト (最適化する必要があります)
エージェント型ユーザーエージェントを使用してAI ボットリクエストをシミュレートします。
curl -svo /dev/null https://www.example.com/page.html \
--header "user-agent: chatgpt-user"
応答が成功すると、x-edgeoptimize-request-id ヘッダーが含まれ、リクエストがEdge Optimizeを通じてルーティングされたことが確認されます。
< 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"
応答には、notにx-edgeoptimize-request-id ヘッダーを含める必要があります。 Edgeで最適化を有効にする前に、ページの内容と応答時間を同じにしておく必要があります。
3. 2つのシナリオを区別する方法
x-edgeoptimize-request-idx-edgeoptimize-fo1)トラフィックルーティングのステータスは、LLM Optimizer UIでも確認できます。 顧客設定に移動し、CDN設定 タブを選択します。
利用可能なオポチュニティ、自動最適化ワークフロー、FAQなど、Edgeでの最適化について詳しくは、Edgeでの最適化の概要に戻ります。