3

好的,所以我已经为此工作了一段时间,并且一直在搜索,但到目前为止,我还没有找到任何真正回答我想知道的答案。我对这个有点不知所措,但我希望我能很快解决这个问题。

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

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

我在workers.properties中有一个工作人员,将它的“主机”字段指向“localhost”,并使用我的Tomcat实例正确的端口,以便一切正常。

在我的 Tomcat server.xml 文件中,我有一个定义为“localhost”的主机,它指向我当前正在服务的 web 应用程序,该主机也设置为 defaultHost。

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

同样,我想要一个简单的纲要:在 apache/tomcat 组合中进行设置,使得 www.domain1.com 指向“webapp1”,www.domain2.com 指向“webapp2”。

4

2 回答 2

10

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

worker.tomcat_home=/usr/local/tomcat/apache-tomcat-6.0.20
worker.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">

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

于 2009-11-19T19:14:12.843 回答
0

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

于 2010-03-30T08:17:41.700 回答