Fastly (BYOCDN)
此配置将代理式流量(来自 AI 机器人和 LLM 用户代理的请求)路由到 Edge Optimize 后端服务(live.edgeoptimize.net)。人类访客和 SEO 机器人仍将照常从您的源站获得响应。完成设置后,可在响应中查找头部 x-edgeoptimize-request-id 以测试配置是否成功。
先决条件
在配置 Fastly VCL 规则之前,请确保您已具备以下条件:
- 可以为您的域访问 Fastly。
- 从 Adobe Brand Visibility 用户界面获取的 Edge Optimize API 密钥。有关步骤,请参阅检索您的 API 密钥。
- (可选)要测试暂存路由,请参阅暂存 API 密钥。
配置
将以下三个 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|ClaudeBot|Claude-User|Claude-SearchBot)") {
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;
return(lookup);
}
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";
restart;
}
if (req.http.x-edgeoptimize-config) {
return(deliver);
}
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 头部。
2XX4XX 或 5XXx-edgeoptimize-fo: 1。允许 Optimize at Edge 通过防火墙规则(可选)
如果您的内容传递网络使用 WAF 或 Bot Manager:
-
在 WAF 或 Bot Manager 中将
*AdobeEdgeOptimize/1.0*用户代理加入允许列表,以便 Optimize at Edge 服务可以获取您的源站内容。 -
如果您的防火墙除了用户代理之外还要求进行其他验证,请生成一个密钥(例如
openssl rand -hex 32),然后:- 在路由规则中,将包含该密钥的
x-edgeoptimize-fetcher-key与其他x-edgeoptimize-*标头一并添加。 - 添加一条 WAF 或 Bot Manager 规则,以允许
x-edgeoptimize-fetcher-key与同一密钥匹配的请求。
- 在路由规则中,将包含该密钥的
-
Optimize at 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)您还可以在 Adobe Brand Visibility 用户界面中检查流量路由状态。转到客户配置,然后选择 内容传递网络配置 选项卡。
要详细了解 Optimize at Edge,包括可用的优化机会、自动优化工作流程和常见问题,请返回 Optimize at Edge 概述。