使用多个域将Apache链接到Tomcat

时间:2009-11-19 18:15:16

标签: java apache tomcat mod-jk multiple-domains

好的,所以我已经在这方面工作了一段时间,一直在寻找,但到目前为止我还没有找到任何答案,实际上回答了我想知道的事情。我有一点在我的绳子的尽头,但我希望我能很快解决这个问题。

所以我安装了Apache 2并提供了标准网页,但我也将其链接到目前支持的某个域的Tomcat实例。但是,我想通过Apache向服务器添加另一个域,该域指向与我已有的代码库不同的代码库。我从几个不同的角度来看待这个问题,我已经确定我对设置这些服务器并不了解我真正做我想做的事情。

我的服务器上的信息很少: 目前使用Apache 2运行单个Tomcat5.5实例,使用mod_jk将它们连接在一起。

我在workers.properties中有一个worker,它使用正确的端口我的Tomcat实例将它的“host”字段指向“localhost”,这样一切正常。

在我的Tomcat server.xml文件中,我有一个定义为“localhost”的主机指向我当前正在服务的webapp,并将该主机设置为defaultHost。

我有一个想法是我可以添加一个与“localhost”(即host2)不同的主机的新worker,然后在我的server.xml文件中定义一个名为“host2”的新主机以匹配它,但是在阅读之后在互联网上的某些人看来,工作者的“主机”似乎必须指向服务器,而不是Tomcat实例中的主机名,这是正确的吗?

再一次,我想要的简单概述: 安装在apache / tomcat组合中,以便www.domain1.com指向“webapp1”,www.domain2.com指向“webapp2”。

2 个答案:

答案 0 :(得分:10)

首先,为两个webapps设置mod_jk工作者。下面的示例workers.properties

workers.tomcat_home=/usr/local/tomcat/apache-tomcat-6.0.20
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/
worker.list=worker1,worker2
worker.worker1.type=ajp13
worker.worker1.host=www.domain1.com
worker.worker1.port=8009
worker.worker2.type=ajp13
worker.worker2.host=www.domain2.com
worker.worker2.port=8009

然后,在apache上设置虚拟主机:

<VirtualHost *:80>
   ServerName www.domain1.com
   JkMount /* worker1
</VirtualHost>

<VirtualHost *:80>
   ServerName www.domain2.com
   JkMount /* worker2
</VirtualHost>

确保server.xml包含端口8009的未注释的AJP连接器(与工作端口匹配)。像这样:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

最后,配置tomcat主机。像这样:

<Host name="www.domain1.com"
   appBase="/path/to/domain1"
   unpackWARs="true"
   autoDeploy="true"
   xmlValidation="false"
   xmlNamespaceAware="false">

<Host name="www.domain2.com"
   appBase="/path/to/domain2"
   unpackWARs="true"
   autoDeploy="true"
   xmlValidation="false"
   xmlNamespaceAware="false">

您可能需要进行一些调整,但它应该接近最终结果。

答案 1 :(得分:0)

您还可以使用mod_proxy更简单的方法。看看http://squirrel.pl/blog/2010/03/30/mapping-tomcat-apps-to-subdomains-with-apache/