使用80端口的多个tomcat实例

时间:2012-08-26 08:42:46

标签: windows apache tomcat port

我有三个不同的应用程序的三个tomcat实例。他们在一台机器上使用8080,8081,8082个端口。如何更改配置以便用户能够从具有不同主机名的80端口进行访问?我在我的机器上安装了Apache,并尝试使用以下教程配置它:How to load balance Tomcat 5.5 with Apache on Windows,直到负载平衡点开始。我有基于本教程的问题。我的Web应用程序在所有tomcat实例中都在webapps / ROOT下。 我在httpd.conf

中有此配置
<IfModule jk_module>
    JkWorkersFile  D:\containters\_tomcat_backend\conf\workers.properties
    JkShmFile      D:\containters\_tomcat_backend\logs\mod_jk.shm
    JkLogFile      D:\containters\_tomcat_backend\logs\mod_jk.log
    JkLogLevel debug
    JkMount / worker1
    JkMount / worker2
</IfModule>

当我从命令提示符运行httpd.exe时,我正在进行此警告:

  

[warn] NameVirtualHost *:80没有VirtualHosts

我是否以正确的方式使我的应用程序与80端口一起工作?我该如何配置此警告?

1 个答案:

答案 0 :(得分:2)

对于您的方案,您不需要负载平衡。在httpd.conf中,您应该为要使用的主机名定义3个虚拟主机(如here所述)。在每个VirtualHost指令中,插入一个 JkMount可以在您的workers.properties中定义一个worker:

JkMount /* worker1
...

# same for worker2 and worker3 in the other virt. hosts

现在来了workers.properties:

...
worker.list = worker1, worker2, worker3

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13

worker.worker2.port=8010
worker.worker2.host=localhost
worker.worker3.type=ajp13

worker.worker3.port=8011
worker.worker3.host=localhost
worker.worker3.type=ajp13

N.B。:我使用的端口与您指定的端口不同,因为Apache和Tomcat之间的通信是通过AJP运行的。最后,在每个tomcat的server.xml中添加一个匹配的AJP连接器:

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

有关详细信息,请参阅this。您提到的警告似乎是由不完整的虚拟主机配置引起的。是否还没有定义VirtualHost个实例?

编辑:如果您不喜欢这么多配置,您还可以将Apache用作代理,并通过ProxyPass / ProxyPassReverse将流量分配给您的tomcats指令。