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