AEM as a Cloud Service 中的 CDN cdn

AEM as a Cloud Service附带一个集成的CDN,旨在通过从靠近用户浏览器的边缘节点提供可缓存的内容来减少延迟。 此完全托管的CDN针对AEM应用程序性能进行了优化。

AEM管理的CDN满足了大多数客户的性能和安全需求。 对于发布层,客户可以选择通过自己的CDN路由流量,他们必须管理此CDN。 此选项基于具体情况提供,尤其是当客户现有与难以替换的CDN提供商的旧版集成时。

希望发布到Edge Delivery Services层的客户可以利用Adobe的托管CDN。 查看托管CDNAdobe。

Adobe 管理的 CDN aem-managed-cdn

要通过Cloud Manager的自助UI使用AEM的内置CDN准备内容交付,您可以利用Adobe的托管CDN功能。 此功能允许您处理自助服务CDN管理,包括配置和安装SSL证书,如DV(域验证)或EV/OV(扩展/组织验证)证书。 有关这些方法的更多详细信息,请参阅以下内容:

限制流量

默认情况下,对于AEM管理的CDN设置,所有公共流量都可以进入发布服务,无论对于生产环境还是非生产(开发和暂存)环境。 您可以通过Cloud Manager用户界面将流量限制到给定环境的发布服务(例如,按一系列IP地址限制暂存)。

请参阅管理 IP 允许列表了解详细信息。

CAUTION
AEM托管CDN仅处理来自允许的IP的请求。 如果您将自己的CDN指向AEM托管的CDN,请确保CDN的IP包含在IP允许列表中。

在CDN上配置流量 cdn-configuring-cloud

您可以通过多种方式在CDN上配置流量,包括:

使用Git中的YAML文件来配置这些功能。 并且,使用Cloud Manager 配置管道来部署它们。

配置CDN错误页面 cdn-error-pages

您可以配置CDN错误页面以替换默认的非品牌页面。 在极少数情况下,当AEM不可用时,会显示此自定义页面。 有关详细信息,请参阅配置CDN错误页面

清除CDN上的缓存内容 purge-cdn

使用 HTTP Cache-Control 标头设置 TTL 是平衡内容传递性能和内容新鲜度的有效方法。但是,在必须立即提供更新内容的情况下,直接清除CDN缓存可能会有帮助。

了解配置清除API令牌清除缓存的CDN内容

CDN上的基本身份验证 basic-auth

对于轻度身份验证用例(包括审阅内容的业务利益相关者),通过显示需要用户名和密码的基本身份验证对话框来保护内容。 了解详情

客户管理的 CDN 指向 AEM 管理的 CDN point-to-point-CDN

如果客户必须使用其现有的CDN,则可以对其进行管理并将其指向AEM管理的CDN,前提是满足以下条件:

  • 客户必须拥有一个费时费力的现有CDN。
  • 客户必须管理它。
  • 客户必须能够配置CDN才能与AEM as a Cloud Service配合使用 — 请参阅下面提供的配置说明。
  • 客户必须有随时待命的工程CDN专家,以防出现与案例相关的问题。
  • 客户在进入生产阶段之前必须执行并成功通过负载测试。

配置说明:

  1. 将CDN指向AdobeCDN的入口作为其源域。 例如:publish-p<PROGRAM_ID>-e<ENV-ID>.adobeaemcloud.com

  2. 将SNI设置为AdobeCDN的入口。

  3. 将Host标头设置为原始域。 例如:Host:publish-p<PROGRAM_ID>-e<ENV-ID>.adobeaemcloud.com

  4. 使用域名设置X-Forwarded-Host标头,以便AEM能够确定主机标头。 例如:X-Forwarded-Host:example.com

  5. 设置X-AEM-Edge-Key。 应使用Cloud Manager配置管道配置该值,如本文中所述。

    • 需要,以便AdobeCDN能够验证请求的源并将X-Forwarded-*标头传递到AEM应用程序。 例如,X-Forwarded-For用于确定客户端IP。 因此,受信任的调用方(即客户管理的CDN)有责任确保X-Forwarded-*标头的正确性(请参阅下面的注释)。
    • (可选)当X-AEM-Edge-Key不存在时,可以阻止对AdobeCDN入口的访问。 如果需要直接访问AdobeCDN的入口,请通知Adobe(将被阻止)。

有关主要CDN供应商的配置示例,请参阅示例CDN供应商配置部分。

在接受实时流量之前,您应向Adobe的客户支持部门验证端到端流量路由是否正常运行。

设置X-AEM-Edge-Key后,您可以按照以下步骤测试请求是否正确路由。

在Linux®中:

curl https://publish-p<PROGRAM_ID>-e<ENV-ID>.adobeaemcloud.com -H "X-Forwarded-Host: example.com" -H "X-AEM-Edge-Key: <PROVIDED_EDGE_KEY>"

在Windows中:

curl https://publish-p<PROGRAM_ID>-e<ENV-ID>.adobeaemcloud.com --header "X-Forwarded-Host: example.com" --header "X-AEM-Edge-Key: <PROVIDED_EDGE_KEY>"
NOTE
使用您自己的CDN时,您不需要在Cloud Manager中安装域和证书。 AdobeCDN中的路由是使用默认域publish-p<PROGRAM_ID>-e<ENV-ID>.adobeaemcloud.com完成的,该域应在Host标头中发送。 使用自定义域名覆盖请求Host标头可能会通过AdobeCDN错误地路由请求。
NOTE
管理自己CDN的客户应当确保通过发送到AEM CDN的标头的完整性。 例如,建议客户清除所有X-Forwarded-*标头,并将它们设置为已知和控制值。 例如,X-Forwarded-For应包含客户端的IP地址,而X-Forwarded-Host应包含站点的主机。
NOTE
沙盒程序环境不支持客户提供的CDN。

仅当存在缓存缺失时,才需要客户CDN和AEM CDN之间的额外跃点。 使用本文所述的缓存优化策略,添加客户CDN应该只会引入可忽略的延迟。

发布层支持此客户CDN配置,但创作层不支持此配置。

CDN供应商配置示例 sample-configurations

下面显示了来自几家领先的CDN供应商的几项配置示例。

Akamai

Akamai1 Akamai2

Amazon CloudFront

CloudFront1 CloudFront2

Cloudflare

Cloudflare1 Cloudflare2

常见错误 common-errors

提供的示例配置显示了所需的基本设置。 但是,客户配置可能具有其他影响规则,这些规则会删除、编辑或重新排列AEM as a Cloud Service提供流量所需的标头。 以下是配置客户管理的CDN以指向AEM as a Cloud Service时发生的常见错误。

重定向到发布服务终结点

当请求收到403禁止响应时,这意味着请求缺少某些所需的标头。 此问题的常见原因是CDN同时管理Apex和www域流量,但没有为www域添加正确的标头。 可通过检查您的AEM as a Cloud Service CDN日志并验证所需的请求标头,来诊断此问题。

重定向循环太多

当页面收到“重定向次数过多”循环时,会在CDN中添加一些请求标头,以匹配强制页面返回自身的重定向。 例如:

  • 创建CDN规则以匹配apex域或www域,并仅添加apex域的X-Forwarded-Host标头。
  • Apex域请求与此CDN规则匹配,该规则将Apex域添加为X-Forwarded-Host标头。
  • 请求将发送到源,其中重定向明确与Apex域的主机标头匹配(例如,^example.com)。
  • 触发重写规则,该规则会将apex域的请求重写为包含www子域的https。
  • 然后,该重定向会发送到客户的边缘,在那里重新触发CDN规则,为Apex域而非www子域重新添加X-Forwarded-Host标头。 然后,该进程将重新开始,直到请求失败。

要解决此问题,请评估您的SSL重定向策略、CDN规则、重定向和重写规则组合。

地理位置标题 geo-headers

AEM托管的CDN通过以下方式向每个请求添加标头:

  • 国家/地区代码: x-aem-client-country
  • 大陆代码: x-aem-client-continent
NOTE
如果存在客户管理的CDN,则这些标头反映的是客户CDN代理服务器的位置,而不是实际客户端的位置。 使用客户管理的CDN时,客户应通过自己的CDN管理地理位置标头。

国家/地区代码的值是ISO 3166-1下描述的Alpha2代码。

大陆代码的值为:

  • AF非洲
  • 南极洲
  • 作为亚洲
  • 欧盟欧洲
  • NA北美洲
  • OC大洋洲
  • 南美洲南美洲

此信息对于重定向到基于请求来源国家/地区的其他URL非常有用。 对于依赖于地理信息的缓存响应,请使用Vary标头。 例如,重定向到特定国家/地区的登陆页面应始终包含Vary: x-aem-client-country。 如果需要,您可以使用Cache-Control: private防止缓存。 另请参阅缓存

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab