在AEM中设置使用多个Dispatcher场执行目标缓存逐出

在使用localhost URL时,在AEM中配置多个Dispatcher场可能会导致缓存刷新请求错误路由。 本文介绍如何使用基于主机的URL设置第二个Dispatcher Flush代理,以确保GraphQL缓存的逐出定位到正确的域和docroot。

描述 description

环境

  • 产品:Adobe Experience Manager (AEM)内部部署
  • 版本: 6.5
  • Apache版本: 2.2(本地测试)
  • 配置:同一Apache实例上存在多个场和虚拟主机;每个域有不同的docroot

问题/症状

  • 针对特定域的缓存刷新请求被错误地路由到同一个场,导致所有失效仅影响一个docroot,而不管请求的路径或域如何。
  • 在刷新代理中使用本地主机URL时,由于主机标头评估,导致所有请求都由上次加载的场处理,此时会发生这种情况。

解决方法 resolution

要解决此问题,请执行以下步骤:

  1. 确保为每个Dispatcher场配置了与其预期域完全匹配的不同虚拟主机模式。
  2. 设置Apache虚拟主机,以便每个ServerName或ServerAlias都唯一对应于每个域。
  3. 对于本地环境,在hosts文件中添加条目,将每个域映射到相应的IP地址。
  4. 将AEM刷新代理配置为使用基于主机的URL,而不是本地主机URL。
  5. 如果发布服务器和Dispatcher服务器位于不同的计算机上,请确保来自发布服务器的DNS或主机文件解析将这些主机名指向Dispatcher服务器的IP地址。
  6. 确认Apache侦听正确的端口(例如,端口80)时没有冲突。
  7. 通过观察正确的路由行为,验证通过刷新代理发送的缓存失效请求到达各自的场和docroot。

备注

  • Dispatcher严格基于HTTP主机标头(而不是URL路径区段)来评估场。
  • 在flush代理URL中使用localhost会导致所有请求的Host标头都设置为localhost,从而导致回退路由到上次加载的场。
  • 如果正确设置了主机名解析,则无论发布服务器和Dispatcher是在同一台服务器上运行,还是在不同的服务器上运行,所述配置均有效。
  • 如果Apache已在端口80上使用适当的主机映射进行侦听,则无需进行其他更改。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f