如何在 AEM 调度程序上设置多个域
How to setup multiple domains on AEM dispatcher
我有一个已经托管并使用 AEM 的网站。我有另一个需要托管的域。如果是托管的,需要在同一个AEM系统(Author、Publisher和Dispatcher)上配置什么配置。
它是用于内容内部重定向的 etc/maps
条目和用于处理带有域名的内容路径的 /virtualhosts
条目的组合,请查看这些 and how-to-disable-trace-requests-to-an-aem-publish-instance
您只需在 AEM 中增加 etc/map
条目,以便在 AEM 中使用您的域名和调度程序中的相应虚拟主机条目处理内容重定向。在 AEM-Local Dispatcher Setup & etc/maps
我的博客上有文档
official Adobe documentation 已在之前的帖子中提供给您,但它并没有涵盖实现正确 multi-tenant 设置所需的所有内容。
不幸的是,multi-tenancy 如果没有从一开始就考虑正确并且需要一支高素质的团队,那么 multi-tenancy 可能很难做到。
网络服务器
根据您的 Web 服务器配置,您很可能需要为新域添加一个额外的 VirtualHost 条目。
<VirtualHost *:80>
ServerName sitea.com
DocumentRoot /usr/lib/apache/htdocs/content/sitea
<Directory /usr/lib/apache/htdocs/content/sitea>
<IfModule disp_apache2.c>
SetHandler dispatcher-handler
ModMimeUsePathInfo On
</IfModule>
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
如果您在 Web 服务器级别重写请求,则必须通过相应地配置 mod_rewrite 添加新的重写规则,以便将请求转发到正确的内容路径。
调度员
在 dispatcher configuration 中,您将必须基于虚拟主机为您的站点创建一个新场。我建议你把它们分成这样的文件:
/farms
{
$include "farm-sitea.any"
$include "farm-siteb.any"
$include "farm-flush.any"
}
注意:确保用户无法使用您的新网站访问其他网站的受限内容。例如,如果 http://sitea.com/secure/page.html
不应可访问,请确保 http://siteb.com/secure/page.html
.
也是如此
AEM
如果您利用 Sling Mappings 来解决进入您的 AEM 实例的请求,您将必须在 /etc/map
.
下为您的新域添加额外的条目
我写了很多关于 link 重写 here 的主题。
既然您在单个 AEM 实例中托管多个站点,您将需要两个应用程序之间的公共代码库来存储instance-wide配置和实用程序类。您可以包含在这个通用包中的服务配置是:
- com.day.cq.commons.servlets.RootMappingServlet.xml
- com.day.cq.rewriter.linkchecker.impl.LinkCheckerImpl.xml
- com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.xml
- org.apache.sling.servlets.resolver.SlingServletResolver.xml
- com.day.cq.commons.impl.ExternalizerImpl.xml
- 等
谈到multi-tenancy,有很多事情要考虑。您可能需要涵盖的一些其他领域是:
- 标记分类法(为内容标记集中定义的名称空间)
- ACL(网站 A 作者应该能够创作网站 B)
- 国际化
- 工作流程(OOTB 工作流程将影响所有网站)
- 大坝
- 等
希望对您有所帮助!
我有一个已经托管并使用 AEM 的网站。我有另一个需要托管的域。如果是托管的,需要在同一个AEM系统(Author、Publisher和Dispatcher)上配置什么配置。
它是用于内容内部重定向的 etc/maps
条目和用于处理带有域名的内容路径的 /virtualhosts
条目的组合,请查看这些
您只需在 AEM 中增加 etc/map
条目,以便在 AEM 中使用您的域名和调度程序中的相应虚拟主机条目处理内容重定向。在 AEM-Local Dispatcher Setup & etc/maps
official Adobe documentation 已在之前的帖子中提供给您,但它并没有涵盖实现正确 multi-tenant 设置所需的所有内容。
不幸的是,multi-tenancy 如果没有从一开始就考虑正确并且需要一支高素质的团队,那么 multi-tenancy 可能很难做到。
网络服务器
根据您的 Web 服务器配置,您很可能需要为新域添加一个额外的 VirtualHost 条目。
<VirtualHost *:80>
ServerName sitea.com
DocumentRoot /usr/lib/apache/htdocs/content/sitea
<Directory /usr/lib/apache/htdocs/content/sitea>
<IfModule disp_apache2.c>
SetHandler dispatcher-handler
ModMimeUsePathInfo On
</IfModule>
Options FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
如果您在 Web 服务器级别重写请求,则必须通过相应地配置 mod_rewrite 添加新的重写规则,以便将请求转发到正确的内容路径。
调度员
在 dispatcher configuration 中,您将必须基于虚拟主机为您的站点创建一个新场。我建议你把它们分成这样的文件:
/farms
{
$include "farm-sitea.any"
$include "farm-siteb.any"
$include "farm-flush.any"
}
注意:确保用户无法使用您的新网站访问其他网站的受限内容。例如,如果 http://sitea.com/secure/page.html
不应可访问,请确保 http://siteb.com/secure/page.html
.
AEM
如果您利用 Sling Mappings 来解决进入您的 AEM 实例的请求,您将必须在 /etc/map
.
我写了很多关于 link 重写 here 的主题。
既然您在单个 AEM 实例中托管多个站点,您将需要两个应用程序之间的公共代码库来存储instance-wide配置和实用程序类。您可以包含在这个通用包中的服务配置是:
- com.day.cq.commons.servlets.RootMappingServlet.xml
- com.day.cq.rewriter.linkchecker.impl.LinkCheckerImpl.xml
- com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.xml
- org.apache.sling.servlets.resolver.SlingServletResolver.xml
- com.day.cq.commons.impl.ExternalizerImpl.xml
- 等
谈到multi-tenancy,有很多事情要考虑。您可能需要涵盖的一些其他领域是:
- 标记分类法(为内容标记集中定义的名称空间)
- ACL(网站 A 作者应该能够创作网站 B)
- 国际化
- 工作流程(OOTB 工作流程将影响所有网站)
- 大坝
- 等
希望对您有所帮助!