使用多个Tomcat实例与80端口

3
我有三个Tomcat实例供三个不同应用程序使用,它们在一台机器上使用8080、8081、8082端口。我该如何改变配置,以便用户可以通过不同的主机名从80端口访问?我在我的机器上安装了一个Apache,并尝试按照以下教程进行配置:如何在Windows上使用Apache负载平衡Tomcat 5.5,直到开始负载平衡。我有基于此教程的问题。我的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没有虚拟主机

我是否正确地使用80端口使我的应用程序工作?如何配置此警告?


1
请查看此链接中提到的步骤,这就是我成功运行它的方法 :-) 现在我可以简单地同时运行两个实例(可能更多,从未尝试过)第一个实例,这是TOMCAT 7.0.29的第二个实例 - nIcE cOw
谢谢@GagandeepBali,我是否需要创建虚拟主机?因为当我启动Apache时它会显示"NameVirtualHost *:80 has no VirtualHosts",而我不知道如何设置。您提供的链接也没有说明如何设置虚拟主机。您是否已经为这两个Tomcat实例配置了虚拟主机? - user1143343
实际上,我只是对我的Apache HTTP服务器进行了所述的更改,并在两个不同的位置安装了Tomcat两次,就这样它就可以工作了。除了链接中提到的那些更改之外,我没有对任何文件进行其他更改。我没有在任何地方声明虚拟主机,除了安装的Tomcat自带的那些。 - nIcE cOw
虚拟主机是原封不动的,因为它们随Tomcat安装而来。我没有在任何地方对它们进行更改。最好从头开始重新安装,否则如果您有备份,请先将修改过的文件恢复到原始状态,然后重新开始 :-) - nIcE cOw
1个回答

2
针对您的情况,您不需要负载均衡。在您的httpd.conf文件中,您应该为您想要使用的主机名定义3个虚拟主机(如此处所述)。在每个VirtualHost指令中,插入一个JkMount,以便在您的workers.properties文件中定义一个工作进程,例如:
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

注意:我使用的端口与您指定的不同,因为Apache和Tomcat之间的通信是通过AJP运行的。最后,在每个Tomcat的server.xml中添加一个匹配的AJP连接器:
<Connector port="8009" protocol="AJP/1.3" />

请参考此处以获取更多详细信息。您提到的警告似乎是由于未完整配置虚拟主机引起的。还没有定义任何VirtualHost实例吗? 编辑:如果您不喜欢那么多的配置,您也可以将Apache用作代理,并通过ProxyPass/ProxyPassReverse指令分配流量到您的Tomcat上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接