Cloudflare (BYOCDN)

此設定會將代理式流量 (來自 AI 機器人和 LLM 使用者代理的要求) 路由至 Edge Optimize 後端服務 (live.edgeoptimize.net)。 真人訪客和 SEO 機器人仍照常由您的來源伺服器提供服務。 若要測試設定,在完成設定之後,請於回應中尋找 x-edgeoptimize-request-id 標頭。

先決條件

在設定 Cloudflare Worker 路由規則之前,請確定您已準備好以下項目:

  • 於網域上具備已啟用 Worker 功能的 Cloudflare 帳戶。
  • 具備在 Cloudflare 中存取您網域 DNS 設定的存取權。
  • 從 Adobe Brand Visibility 使用者介面擷取的 Edge Optimize API 金鑰。 相關步驟請參閱檢索 API 金鑰
  • (選用) 若要測試中繼路由,請參閱中繼 API 金鑰

路由如何運作

若設定正確,Cloudflare Worker 會攔截代理式使用者代理對您網域 (例如 www.example.com/page.html) 發出的要求,並將要求路由至 Edge Optimize 後端。 後端要求包含必要的標頭。

測試後端要求

您可以直接向邊緣最佳化後端傳送要求,以驗證路由設定。

curl -svo /dev/null https://live.edgeoptimize.net/page.html \
  -H 'x-forwarded-host: www.example.com' \
  -H 'x-edgeoptimize-url: /page.html' \
  -H 'x-edgeoptimize-api-key: $EDGE_OPTIMIZE_API_KEY' \
  -H 'x-edgeoptimize-config: LLMCLIENT=TRUE;'

必要的標頭

對 Edge Optimize 後端的要求必須設定以下標頭:

頁首
說明
範例
x-forwarded-host
要求的原始主機。 識別網站網域時需要使用。
www.example.com
x-edgeoptimize-url
要求的原始 URL 路徑和查詢字串。
/page.html/products?id=123
x-edgeoptimize-api-key
Adobe 提供給您網域使用的 API 金鑰。
your-api-key-here
x-edgeoptimize-config
快取鍵差異化的設定字串。
LLMCLIENT=TRUE;

設定選項

有兩種方法可設定 Cloudflare 進行邊緣最佳化:

對於手動設定,您必須手動將工作程式連結至您的網域。 請參閱將路由新增至您的網域

選項 1:Adobe Brand Visibility 中的引導式設定

  1. 針對您要設定的 URL 開啟​內容傳遞網路設定
  2. 在「將最佳化部署至 AI 代理」中,視需要選取「啟用」。
  3. 選取「在 Cloudflare 中部署路由」。
  4. 選取「與 Cloudflare OAuth 連接」。 使用可以管理工作程式和工作程式路由的 Cloudflare 使用者登入,然後核准對正確帳戶和區域的存取權。 您不需要在 Adobe Brand Visibility 中輸入 API 權杖。
  5. 選取網站的 Cloudflare 區域。 確保目標主機名稱具有代理的 DNS 記錄,且不是由現有的自訂工作程式或重疊工作程式路由處理。
  6. 依照引導式步驟部署專用的工作程式、新增路由及驗證設定。

自 Adobe Brand Visibility 在 Cloudflare 中部署路由

NOTE
引導式設定為合格帳戶的搶先存取功能。 如需入門協助,請連絡您的Adobe客戶團隊或傳送電子郵件至abv-at-edge@adobe.com

選項 2:手動設定

依照下列步驟手動建立和設定工作程式。

步驟 1:建立 Cloudflare Worker

  1. 登入您的 Cloudflare 儀表板。
  2. 在側邊欄中導覽至「Worker 與頁面」。
  3. 按一下「建立應用程式」,然後按一下「建立 Worker」。
  4. 為您的 Worker 命名 (例如 edge-optimize-router)。
  5. 按一下「部署」,使用預設程式碼建立 Worker。

Cloudflare Worker 儀表板

步驟 2:新增 Worker 程式碼

建立 Worker 之後,按一下「編輯程式碼」,然後以 worker.js 的程式碼取代預設程式碼。 如果您已有現有的 Cloudflare Worker,請將程式碼與既有的 Worker 程式碼合併,而非完全取代。

按一下「儲存並部署」,以發佈工作程式。

步驟 3:設定環境變數和密鑰

環境變數會安全地儲存敏感設定,例如您的 API 金鑰。

  1. 在您的 Worker 設定中,導覽至「設定」>「變數」。

  2. 在「環境變數」之下,按一下「新增變數」。

  3. 新增下列變數:

    table 0-row-3 1-row-3 2-row-3
    變數名稱 說明 必要
    EDGE_OPTIMIZE_API_KEY Adobe 提供的 Edge Optimize API 金鑰。
    EDGE_OPTIMIZE_TARGET_HOST Edge Optimize 要求的目標主機 (以 x-forwarded-host 標頭傳送) 以及容錯移轉的原始網域。 必須是沒有通訊協定的網域 (例如 www.example.com,而非 https://www.example.com)。
  4. 對於 API 金鑰,按一下「加密」,安全地將其儲存。

  5. 按一下「儲存並部署」。

Cloudflare 環境變數

將路由新增至您的網域 add-a-route-to-your-domain

若採取手動設定,需手動將工作程式連結至您的網域。 此步驟會針對您的流量啟動工作程式。

  1. 前往 Worker 的「設定」>「觸發程序」。
  2. 在「路由」之下,按一下「新增路由」。
  3. 輸入您的網域模式 (例如 www.example.com/*example.com/*)。
  4. 從下拉式清單中選取您的區域。
  5. 按一下​儲存

或者,您可以在區域層級設定路由:

  1. 在 Cloudflare 中導覽至您的網域。
  2. 前往「Worker 路由」。
  3. 按一下「新增路由」並指定模式和 Worker。

Cloudflare Worker 路由

驗證容錯移轉行為

如果 Edge Optimize 無法使用或傳回錯誤,Worker 會自動容錯移轉至您的來源。 容錯移轉回應包含 x-edgeoptimize-fo 標頭:

< HTTP/2 200
< x-edgeoptimize-fo: 1

您可以在 Cloudflare Worker 記錄中監視容錯移轉事件,以便進行疑難排解。

了解 Worker 邏輯

Cloudflare Worker 會實施下列邏輯:

  1. 使用者代理偵測:​檢查傳入要求的使用者代理是否與任何已定義的代理式機器人相符 (不區分大小寫)。

  2. 路徑目標選擇:​根據目標路徑選擇性篩選要求。 預設情況下,會路由所有 HTML 頁面 (以 /、無副檔名或 .html 結尾的 URL)。 您可以使用 TARGETED_PATHS 陣列指定特定路徑。

  3. 迴圈保護:x-edgeoptimize-request 標頭能防止無限迴圈。 當 Edge Optimize 將要求傳回您的來源時,此標頭設為 "1",而 Worker 傳遞要求時不會將其路由回到 Edge Optimize。

  4. 標頭安全性:​在設定 Edge Optimize 標頭之前,Worker 會移除傳入要求中任何現有的 x-edgeoptimize-* 標頭,以避免標頭注入攻擊。

  5. 標頭對應: Worker 會設定 Edge Optimize 的必要標頭:

    • x-forwarded-host:識別原始網站網域。
    • x-edgeoptimize-url:保留原始要求路徑和查詢字串。
    • x-edgeoptimize-api-key:使用 Edge Optimize 驗證要求。
    • x-edgeoptimize-config:提供快取鍵設定。
  6. 容錯移轉邏輯:​如果 Edge Optimize 傳回任何錯誤狀態代碼 (4XX 用戶端錯誤或 5XX 伺服器錯誤),或要求因網路錯誤而失敗,Worker 會使用 EDGE_OPTIMIZE_TARGET_HOST 自動容錯移轉至您的來源。 容錯移轉回應包含 x-edgeoptimize-fo: 1 標頭,用於表示已發生容錯移轉。

  7. 重新導向處理:redirect: "manual" 選項可以確保來自 Edge Optimize 的重新導向回應會傳遞至用戶端,而 Worker 不會追隨重新導向。

自訂設定

您可以透過修改程式碼頂端的設定常數,來自訂工作程式的行為:

代理式機器人清單

修改 AGENTIC_BOTS 陣列以新增或移除使用者代理:

const AGENTIC_BOTS = [
  'AdobeEdgeOptimize-AI',
  'ChatGPT-User',
  'GPTBot',
  'OAI-SearchBot',
  'PerplexityBot',
  'Perplexity-User',
  'ClaudeBot',
  'Claude-User',
  'Claude-SearchBot',
  // Add additional user agents as needed
];

目標路徑

預設情況下,所有 HTML 頁面都會路由至 Edge Optimize。 若要將路由限制在特定路徑,請修改 TARGETED_PATHS 陣列:

// Route all HTML pages (default)
const TARGETED_PATHS = null;

// Or specify exact paths to route
const TARGETED_PATHS = ['/', '/page.html', '/products', '/about-us'];

容錯移轉設定

預設情況下,Worker 會在 Edge Optimize 發生任何 4XX 或 5XX 錯誤時進行容錯移轉。 自訂此行為:

// Default: failover on any 4XX or 5XX error
const FAILOVER_ON_4XX = true;
const FAILOVER_ON_5XX = true;

// Failover only on 5XX server errors (not 4XX client errors)
const FAILOVER_ON_4XX = false;
const FAILOVER_ON_5XX = true;

// Disable automatic failover (not recommended)
const FAILOVER_ON_4XX = false;
const FAILOVER_ON_5XX = false;

重要考量

  • 容錯移轉行為:​如果 Edge Optimize 傳回任何錯誤 (4XX 或 5XX 狀態代碼),或要求因網路錯誤而失敗,Worker 會自動容錯移轉至您的來源。 容錯移轉使用 EDGE_OPTIMIZE_TARGET_HOST 做為原始網域 (類似 Fastly 的 F_Default_Origin 或 CloudFront 的 Default_Origin)。 容錯移轉回應包含 x-edgeoptimize-fo: 1 標頭,可用於監視和偵錯。

  • 快取: Cloudflare 預設會根據 URL 快取回應。 由於代理式流量接收的內容與真人流量不同,請確保您的快取設定將此情況納入考量。 請考慮使用快取 API 或快取標頭區分快取的內容。 您的快取鍵中應包含 x-edgeoptimize-config 標頭。

  • 速率限制:​監視您的 Edge Optimize 使用情形,並視需要考慮對代理式流量實施速率限制。

  • 測試:​部署至生產環境之前,請一律先在中繼環境中測試設定。 確認代理式和真人流量的運作皆符合預期。 透過模擬 Edge Optimize 錯誤來測試容錯移轉行為。

  • 記錄:​啟用 Cloudflare Worker 記錄,以便監視要求及進行疑難排解。 導覽至「Workers」>「您的 Worker」>「記錄」來檢視即時記錄。 Worker 記錄容錯移轉事件以供偵錯使用。

疑難排解

問題
可能的原因
解決方案
回應中沒有 x-edgeoptimize-request-id 標頭
Worker 路由不相符,或使用者代理不在代理式機器人清單中。
確認您的路由模式符合要求 URL。 檢查使用者代理是否在 AGENTIC_BOTS 陣列中。
Edge Optimize 中的 401 或 403 錯誤
API 金鑰無效或遺失。
確認環境變數與密鑰中的 EDGE_OPTIMIZE_API_KEY 設定正確。 聯絡 Adobe 確認您的 API 金鑰有效。
無限重新導向或迴圈
未正確設定或檢查迴圈保護標頭。
確保 x-edgeoptimize-request 標頭檢查已就緒。
真人流量受到影響
Worker 路由邏輯過於廣泛。
確認使用者代理的對應邏輯正確且不區分大小寫。 檢查 TARGETED_PATHS 的設定正確。
回應速度緩慢
Edge Optimize 後端的網路延遲。
已預期第一個要求會發生這樣的情況;後續要求會快取至 Edge Optimize。
回應中的 x-edgeoptimize-fo: 1 標頭
Edge Optimize 傳回錯誤,並容錯移轉至來源。
檢查 Cloudflare Worker 記錄中的特定錯誤代碼。 向 Adobe 確認 Edge Optimize 的服務狀態。
容錯移轉未正常運作
容錯移轉標記已停用,或容錯移轉邏輯發生錯誤。
確認 FAILOVER_ON_4XXFAILOVER_ON_5XX 是否設定為 true。 檢查 Worker 記錄中的錯誤訊息。
某些路徑未最佳化
路徑不符合目標路徑或 HTML 頁面模式。
確認路徑是否在 TARGETED_PATHS (若已指定) 中,並且符合 HTML 頁面規則運算式模式。
要求因為主機無效而執行失敗
EDGE_OPTIMIZE_TARGET_HOST 包含通訊協定 (例如 https://)。
僅能使用沒有通訊協定的網域名稱 (例如 example.com,而非 https://example.com)。
容錯移轉期間發生 530 錯誤
Cloudflare 無法連線至來源,或容錯移轉要求含有無效的標頭。
確保容錯移轉功能會移除 Edge Optimize 標頭。 確認您的來源可供存取,且 DNS 的設定正確。

透過防火牆規則允許邊緣最佳化 (選用)

如果您的內容傳遞網路使用 WAF 或機器人管理員:

  • 將 WAF 或機器人管理員中的 *AdobeEdgeOptimize/1.0* 使用者代理加入允許清單,讓邊緣最佳化服務可以擷取您的來源內容。

  • 如果您的防火牆需要使用者代理以外的其他驗證,請產生密碼 (例如,openssl rand -hex 32) 並:

    • 將附有密碼的 x-edgeoptimize-fetcher-key 新增到路由規則中,與其他 x-edgeoptimize-* 標頭一起。
    • 新增 WAF 或機器人管理員規則,允許 x-edgeoptimize-fetcher-key 符合相同密碼時的請求。
  • 邊緣最佳化會依原樣轉送此標題;您擁有完整的金鑰生命週期。

驗證設定

完成設定後,請確認機器人流量會路由至 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"

回應​ 不應 ​包含 x-edgeoptimize-request-id 標頭。 頁面內容和回應時間應與啟用邊緣最佳化之前維持相同。

3. 如何區分這兩種情境

頁首
機器人流量 (最佳化)
真人流量 (不受影響)
x-edgeoptimize-request-id
存在:包含唯一的要求 ID
不存在
x-edgeoptimize-fo
唯有發生容錯移轉時存在 (值:1)
不存在

您也可以在 Adobe Brand Visibility 使用者介面中確認流量路由的狀態。 導覽至「客戶設定」,然後選取「內容傳遞網路設定」索引標籤。

將最佳化部署到 AI 代理:已完成

若要了解更多關於邊緣最佳化的內容,包括可用的機會、自動最佳化工作流程和常見問題,請返回邊緣最佳化概觀

recommendation-more-help
brand-visibility-help-main-toc