单个 apache tomcat 上的多个域

Posted

技术标签:

【中文标题】单个 apache tomcat 上的多个域【英文标题】:Multiple domains on single apache tomcat 【发布时间】:2012-10-18 06:45:53 【问题描述】:

我有两个域,但只有一个运行 tomcat 7 的虚拟服务器。我有自己的 ubuntu Linux,在虚拟服务器上运行具有完全 root 访问权限。我设置了shorewall防火墙,它将端口80上的任何请求转发到端口8080(tomcat正在监听的地方)。

所以我已经在网上搜索过,但我只找到在我的情况下不起作用的“解决方案”。这是我到目前为止所做的:

    我将 websiteA.war 作为 ROOT.war 复制到 $CATALINA_HOME/webapps/ 文件夹中 我还将我的 websiteB.war 作为 WebsiteB.war 复制到 $CATALINA_HOME/webapps/ 文件夹中

    我通过以下方式修改了我的 $CATALINA_HOME/conf/server.xml:

    主机名="www.websiteA.com" appBase="webapps" unpackWARs="true" autoDeploy="true"

    主机名="www.websiteB.de" appBase="webapps/websiteB" unpackWARs="true" autoDeploy="true"

    主机名="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"

    我在文件夹“$CATALINA_HOME/conf/Catalina/www.websiteB.com”中创建了以下文件ROOT.xml:

    ?xml version="1.0" encoding="UTF-8"?

    上下文 displayName="www.websiteB.com" docBase="" path=""

    /上下文

    重新启动 Tomcat。 websiteA.com 部署在“/”下,websiteB.com 部署在“/websiteB”下

    输入 www.websiteB.com 到达“/”,这意味着 websiteA 实际上显示为 websiteB.com

我在这里做错了什么?

【问题讨论】:

嘿,你得到答案了吗? 是的,刚刚用答案更新了这个非常古老的问题。 【参考方案1】:

转到您的$CATALINA_HOME/conf/server.xml 文件。

在那里,您将找到以下部分:

<Engine name="Catalina" defaultHost="localhost">
    <!-- ... some other stuff ... -->
    <Host name="www.websiteA-Address" appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>
    <Host name="www.websiteB-Address" appBase="directory/of/WAR-files-for-B" unpackWARs="true" autoDeploy="true"></Host>
    <Host name="websiteB-Address" appBase="directory/of/WAR-files-for-B" unpackWARs="true" autoDeploy="true"></Host>
    <Host name="www.websiteC-Address"  appBase="directory/of/WAR-files-for-C" unpackWARs="true" autoDeploy="true"></Host>
</Engine>

因此,appBase 将是您必须放置 ROOT.war(!) 的目录,name 是将映射到该目录的域名。

directory/of/WAR-files$CATALINA_HOME 中的子目录,与标准文件夹webapps 具有相同的级别(!!!)。所以两个目录共存!

【讨论】:

以上是关于单个 apache tomcat 上的多个域的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 代理 AJP 使用 Tomcat 8 服务多个域

为多个域部署Apache Tomcat的WAR文件

单个 Pyramid 实例上的多个域和子域

单个进程 winform 应用程序上的多个应用程序域

使用 Apache 的 VPS 上的多个域

一台 Apache 服务器上的多个域(WAMP)