在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
要解决此问题,请执行以下步骤:
- 确保为每个Dispatcher场配置了与其预期域完全匹配的不同虚拟主机模式。
- 设置Apache虚拟主机,以便每个ServerName或ServerAlias都唯一对应于每个域。
- 对于本地环境,在hosts文件中添加条目,将每个域映射到相应的IP地址。
- 将AEM刷新代理配置为使用基于主机的URL,而不是本地主机URL。
- 如果发布服务器和Dispatcher服务器位于不同的计算机上,请确保来自发布服务器的DNS或主机文件解析将这些主机名指向Dispatcher服务器的IP地址。
- 确认Apache侦听正确的端口(例如,端口80)时没有冲突。
- 通过观察正确的路由行为,验证通过刷新代理发送的缓存失效请求到达各自的场和docroot。
备注:
- Dispatcher严格基于HTTP主机标头(而不是URL路径区段)来评估场。
- 在flush代理URL中使用localhost会导致所有请求的Host标头都设置为localhost,从而导致回退路由到上次加载的场。
- 如果正确设置了主机名解析,则无论发布服务器和Dispatcher是在同一台服务器上运行,还是在不同的服务器上运行,所述配置均有效。
- 如果Apache已在端口80上使用适当的主机映射进行侦听,则无需进行其他更改。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f