Cloudflare (BYOCDN)
此配置将代理式流量(来自 AI 机器人和 LLM 用户代理的请求)路由到 Edge Optimize 后端服务(live.edgeoptimize.net)。 人类访客和 SEO 机器人仍将照常从您的源站获得响应。 完成设置后,可在响应中查找头部 x-edgeoptimize-request-id 以测试配置是否成功。
先决条件
在设置Cloudflare Worker路由规则之前,请确保您具有:
- 具有 Cloudflare 帐户,并且在您的域中启用了 Workers。
- 可以在 Cloudflare 中访问您的域的 DNS 设置。
- 具有从 LLM Optimizer UI 检索到的 Edge Optimize API 密钥。 有关步骤,请参阅检索您的 API 密钥。
- (可选)要测试暂存路由,请参阅暂存 API 密钥。
如何进行路由
正确配置后,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(推荐)——自动创建新的 Worker,并提示您输入必需的环境变量和密码。 如果您当前没有此域的 Cloudflare Worker,请使用此选项。
- 选项 2:手动设置——分步说明了如何自行创建和配置 Worker。 如果您的域当前已配置了一个 Cloudflare Worker,您需要将 Edge Optimize 代码合并到您现有的 Worker 中(请参阅步骤 2:添加 Worker 代码),或者如果您希望完全控制部署过程,请使用此选项。
无论您选择哪个选项,都必须手动将 Worker 关联到您的域——请参阅步骤:给您的域添加路由。
选项 1:部署到 Cloudflare
此选项使用部署到 Cloudflare 按钮自动创建 Worker,并在您的 Cloudflare 帐户中配置必需的环境变量和密码。 如果您要设置新的 Worker,这个方法可以让您快速开始使用。
步骤 1:部署 Worker
点击下面的按钮,将 Edge Optimize worker 部署到您的 Cloudflare 帐户:
步骤 2:填写部署表单
点击按钮,打开 Worker 设置页面。 按照下述方法填写表单:
-
Git 帐户——从下拉菜单中选择您的 GitHub 或 GitLab 帐户。 Cloudflare 会将 Worker 代码分支到您帐户中的存储库中。 如果未列出任何帐户,您可以直接从下拉列表中选择 + 新 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(已预填充)。 -
非生产分支的版本——不勾选。 这是开发人员工作流功能,这个部署中不需要。
-
点击创建并部署。
Worker 部署完成后,继续添加指向您的域名的路由,将 Worker 与您的域相关联。 路由未自动配置,必须手动完成。
选项 2:手动设置
按照这些步骤手动创建和配置 Worker。
步骤 1:创建 Cloudflare Worker
- 登录您的 Cloudflare 仪表板。
- 在侧边栏中导航到 Workers 和页面。
- 点击创建应用程序,然后点击创建 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 与您的域相关联。 此步骤会激活您流量中的 Worker。
- 前往 Worker 的设置 > 触发器。
- 在 路由 中点击添加路由。
- 输入您的域模式(例如
www.example.com/*或example.com/*)。 - 从下拉列表中选择您的区域。
- 单击保存。
或者,您也可以在区域层面配置路由:
- 在 Cloudflare 中导航到您的域。
- 前往 Workers 路由。
- 点击添加路由,指定模式和 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'];
故障转移配置
默认情况下,如果 Edge Optimize 返回任何 4XX 或 5XX 错误,Worker 都会触发故障转移。 自定义这个行为:
// 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 Workers 日志记录,以监控请求,解决问题。 导航到 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)。允许 Optimize at Edge 通过防火墙规则(可选)
如果您的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 头部。 页面内容和响应时间应保持与启用 Optimize at Edge 之前时完全相同。
3. 如何区分这两种场景
x-edgeoptimize-request-idx-edgeoptimize-fo1)也可以在 LLM Optimizer UI 中查看流量路由的状态。 导航到 客户配置 并选择 CDN配置 选项卡。
要进一步了解Edge优化,包括可用的机会、自动优化工作流和常见问题,请返回Edge优化概述。