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へのエージェント型リクエストのルーティング、キャッシュキーの分離、デフォルトのオリジンへのフェイルオーバーを処理します。

Fastly VCL

VCL スニペットを追加

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 ヘッダーが含まれます。

シナリオ
動作
Edge Optimizeは2XXを返します
最適化された応答がクライアントに提供されます。
Edge Optimizeは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-id
現在 – 一意のリクエスト IDを含む
不在
x-edgeoptimize-fo
フェールオーバーが発生した場合にのみ存在します(値:1
不在

トラフィックルーティングのステータスは、LLM Optimizer UIでも確認できます。 顧客設定​に移動し、CDN設定 タブを選択します。

AI エージェントへの最適化のデプロイ – 完了

利用可能なオポチュニティ、自動最適化ワークフロー、FAQなど、Edgeでの最適化について詳しくは、Edgeでの最適化の概要に戻ります。

recommendation-more-help
llm-optimizer-help-main-toc