好的,所以我已经为此工作了一段时间,并且一直在搜索,但到目前为止,我还没有找到任何真正回答我想知道的问题的答案。我对这个有点束手无策,但我希望我能尽快解决这个问题。
所以我安装了 Apache 2 并提供标准网页,但我也将其链接到我当前支持的域之一的 Tomcat 实例。但是,我想通过 Apache 向服务器添加另一个域,该域指向一个与我已有的代码库不同的代码库。我从几个不同的角度来看这个问题,我确定我对设置这些服务器的了解还不够多,无法真正完成我想做的事情。
关于我的服务器的一些信息: 目前使用 Apache 2 运行单个 Tomcat5.5 实例,使用 mod_jk 将它们连接在一起。
我在 workers.properties 中有一个工作人员将它的“主机”字段指向“本地主机”,并使用正确的端口我的 Tomcat 实例,以便一切正常。
在我的 Tomcat server.xml 文件中,我有一个定义为“localhost”的主机,它指向我当前正在服务的我的 Web 应用程序,该主机也设置为 defaultHost。
我的想法是我可以添加一个新的 worker,其主机与“localhost”(即 host2)不同,然后在我的 server.xml 文件中定义一个名为“host2”的新主机来匹配它,但是在阅读之后围绕互联网上的一些,似乎工作人员的“主机”必须指向服务器,而不是 Tomcat 实例中的主机名,这是正确的吗?
再一次,我想要的是一个简单的纲要: 在 apache/tomcat 组合中设置 www.domain1.com 指向“webapp1”,www.domain2.com 指向“webapp2”。
最佳答案
首先,为两个 webapps 设置 mod_jk worker。下面是示例 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
Then, set up virtual hosts on 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">
您可能需要做一些调整,但应该接近最终结果。
关于java - 将 Apache 链接到具有多个域的 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765399/