Cloudflare (BYOCDN)
此設定會將代理式流量 (來自 AI 機器人和 LLM 使用者代理的要求) 路由至 Edge Optimize 後端服務 (live.edgeoptimize.net)。 真人訪客和 SEO 機器人仍照常由您的來源伺服器提供服務。 若要測試設定,在完成設定之後,請於回應中尋找 x-edgeoptimize-request-id 標頭。
先決條件
在設定Cloudflare Worker路由規則之前,請確定您具有:
路由如何運作
若設定正確,Cloudflare Worker 會攔截代理式使用者代理對您網域 (例如 www.example.com/page.html) 發出的要求,並將要求路由至 Edge Optimize 後端。 後端要求包含必要的標頭。
測試後端要求
您可以直接向 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-hostwww.example.comx-edgeoptimize-url/page.html 或 /products?id=123x-edgeoptimize-api-keyyour-api-key-herex-edgeoptimize-configLLMCLIENT=TRUE;設定選項
有兩種方法可以針對 Edge Optimize 設定 Cloudflare Worker:
- 選項 1:部署至 Cloudflare (建議) — 自動建立新的工作程式,並提示您輸入必要的環境變數和密碼。 如果您不具備此網域的既有 Cloudflare Worker,請採取此選項。
- 選項 2:手動設定 — 自行建立和設定工作程式的逐步指示。 有兩種情況可以使用這個選項,一是您已在網域上設定現有的 Cloudflare Worker,因此必須把 Edge Optimize 程式碼合併到既有的 Worker 中 (請參閱步驟 2:新增 Worker 程式碼),另一則是您希望完全控制部署時。
無論您選擇哪個選項,都必須手動將工作程式連結至您的網域,請參閱步驟:將路由新增至您的網域。
選項 1:部署至 Cloudflare
此選項使用「部署至 Cloudflare」按鈕,自動建立工作程式,並在您的 Cloudflare 帳戶中設定必要的環境變數和密碼。 如果您正在設定新的工作程式,這是能最快開始使用的方法。
步驟 1:部署工作程式
按一下下方的按鈕,將 Edge Optimize 工作程式部署至您的 Cloudflare 帳戶:
步驟 2:填寫部署表單
按一下按鈕,會開啟 Worker 設定頁面。 請依照以下說明填寫表單:
-
Git 帳戶 — 從下拉式選單中選取您的 GitHub 或 GitLab 帳戶。 Cloudflare 會將工作程式的程式碼分叉至您帳戶的存放庫中。 如果未列出任何帳戶,您可以直接從下拉式選單中選取「+ 新 GitHub 連線」或「+ 新 GitLab 連線」,藉以新增連線。 如需詳細資訊,請參閱 Cloudflare Git 整合指南。
-
建立私人 Git 存放庫:此項目保留為勾選狀態 (預設)。
-
專案名稱:維持為
edge-optimize-router或輸入您想要的名稱。 -
EDGE_OPTIMIZE_API_KEY:貼上 Adobe 提供的 Edge Optimize API 金鑰。 此值會儲存為加密的密鑰。
-
EDGE_OPTIMIZE_TARGET_HOST:輸入不含通訊協定的網站網域 (例如:
www.example.com)。 -
建置命令:留空。
-
部署命令:維持為
npm run deploy(預填)。 -
非生產分支的建置:保持未勾選。 此為開發人員工作流程功能,並非此部署所需的功能。
-
按一下「建立並部署」。
部署工作程式之後,繼續前往「新增您網域的路由」,將工作程式與您的網域連結。 路由不會自動設定,必須手動完成。
選項 2:手動設定
依照下列步驟手動建立和設定工作程式。
步驟 1:建立 Cloudflare Worker
- 登入您的 Cloudflare 儀表板。
- 在側邊欄中導覽至「Worker 與頁面」。
- 按一下「建立應用程式」,然後按一下「建立 Worker」。
- 為您的 Worker 命名 (例如
edge-optimize-router)。 - 按一下「部署」,使用預設程式碼建立 Worker。
步驟 2:新增 Worker 程式碼
建立背景工作之後,按一下編輯程式碼,並將預設程式碼取代為worker.js的程式碼。 如果您已有現有的Cloudflare Worker,請將程式碼與現有程式碼合併,而非完全取代。
按一下「儲存並部署」以發佈 Worker。
步驟 3:設定環境變數和密鑰
環境變數會安全地儲存敏感設定,例如您的 API 金鑰。
-
在您的 Worker 設定中,導覽至「設定」>「變數」。
-
在「環境變數」之下,按一下「新增變數」。
-
新增下列變數:
table 0-row-3 1-row-3 2-row-3 變數名稱 說明 必要 EDGE_OPTIMIZE_API_KEYAdobe 提供的 Edge Optimize API 金鑰。 是 EDGE_OPTIMIZE_TARGET_HOSTEdge Optimize 要求的目標主機 (以 x-forwarded-host標頭傳送) 以及容錯移轉的原始網域。 必須是沒有通訊協定的網域 (例如www.example.com,而非https://www.example.com)。是 -
對於 API 金鑰,按一下「加密」,安全地將其儲存。
-
按一下「儲存並部署」。
將路由新增至您的網域 add-a-route-to-your-domain
無論您使用哪個設定選項,都必須手動將工作程式連結至您的網域。 此步驟會針對您的流量啟動工作程式。
- 前往 Worker 的「設定」>「觸發程序」。
- 在「路由」之下,按一下「新增路由」。
- 輸入您的網域模式 (例如
www.example.com/*或example.com/*)。 - 從下拉式清單中選取您的區域。
- 按一下儲存。
或者,您可以在區域層級設定路由:
- 在 Cloudflare 中導覽至您的網域。
- 前往「Worker 路由」。
- 按一下「新增路由」並指定模式和 Worker。
驗證容錯移轉行為
如果 Edge Optimize 無法使用或傳回錯誤,Worker 會自動容錯移轉至您的來源。 容錯移轉回應包含 x-edgeoptimize-fo 標頭:
< HTTP/2 200
< x-edgeoptimize-fo: 1
您可以在 Cloudflare Worker 記錄中監視容錯移轉事件,以便進行疑難排解。
了解 Worker 邏輯
Cloudflare Worker 會實施下列邏輯:
-
使用者代理偵測:檢查傳入要求的使用者代理是否與任何已定義的代理式機器人相符 (不區分大小寫)。
-
路徑目標選擇:根據目標路徑選擇性篩選要求。 預設情況下,會路由所有 HTML 頁面 (以
/、無副檔名或.html結尾的 URL)。 您可以使用TARGETED_PATHS陣列指定特定路徑。 -
迴圈保護:
x-edgeoptimize-request標頭能防止無限迴圈。 當 Edge Optimize 將要求傳回您的來源時,此標頭設為"1",而 Worker 傳遞要求時不會將其路由回到 Edge Optimize。 -
標頭安全性:在設定 Edge Optimize 標頭之前,Worker 會移除傳入要求中任何現有的
x-edgeoptimize-*標頭,以避免標頭注入攻擊。 -
標頭對應: Worker 會設定 Edge Optimize 的必要標頭:
x-forwarded-host:識別原始網站網域。x-edgeoptimize-url:保留原始要求路徑和查詢字串。x-edgeoptimize-api-key:使用 Edge Optimize 驗證要求。x-edgeoptimize-config:提供快取鍵設定。
-
容錯移轉邏輯:如果 Edge Optimize 傳回任何錯誤狀態代碼 (4XX 用戶端錯誤或 5XX 伺服器錯誤),或要求因網路錯誤而失敗,Worker 會使用
EDGE_OPTIMIZE_TARGET_HOST自動容錯移轉至您的來源。 容錯移轉回應包含x-edgeoptimize-fo: 1標頭,用於表示已發生容錯移轉。 -
重新導向處理:
redirect: "manual"選項可以確保來自 Edge Optimize 的重新導向回應會傳遞至用戶端,而 Worker 不會追隨重新導向。
自訂設定
您可以修改程式碼頂端的設定常數,自訂 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 標頭AGENTIC_BOTS 陣列中。EDGE_OPTIMIZE_API_KEY 設定正確。 聯絡 Adobe 確認您的 API 金鑰有效。x-edgeoptimize-request 標頭檢查已就緒。TARGETED_PATHS 的設定正確。x-edgeoptimize-fo: 1 標頭FAILOVER_ON_4XX 和 FAILOVER_ON_5XX 是否設定為 true。 檢查 Worker 記錄中的錯誤訊息。TARGETED_PATHS (若已指定) 中,並且符合 HTML 頁面規則運算式模式。EDGE_OPTIMIZE_TARGET_HOST 包含通訊協定 (例如 https://)。example.com,而非 https://example.com)。透過防火牆規則允許邊緣最佳化 (選用)
如果您的CDN使用WAF或機器人管理員:
-
允許列出WAF或機器人管理員中的
*AdobeEdgeOptimize/1.0*使用者代理程式,讓Edge最佳化服務可以擷取您的來源內容。 -
如果您的防火牆需要使用者代理程式以外的其他驗證,請產生密碼(例如,
openssl rand -hex 32)並:- 將帶有密碼的
x-edgeoptimize-fetcher-key新增到路由規則中與其他x-edgeoptimize-*標頭一起。 - 新增WAF或機器人管理員規則以允許
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"
回應 不應 包含 x-edgeoptimize-request-id 標頭。 頁面內容和回應時間應與啟用邊緣最佳化之前維持相同。
3. 如何區分這兩種情境
x-edgeoptimize-request-idx-edgeoptimize-fo1)您也可以在 LLM Optimizer 使用者介面中確認流量路由的狀態。 瀏覽至 客戶組態 並選取 CDN組態 標籤。
若要進一步瞭解Edge最佳化,包括可用的機會、自動最佳化工作流程和常見問答,請返回Edge最佳化概覽。