我有三个不同的应用程序的三个tomcat实例。 他们在一台机器上使用8080,8081,8082个端口。 如何更改configuration,使用户能够从80端口访问不同的主机名? 我在我的机器上安装了一个Apache,并尝试使用以下教程进行configuration: 如何在Windows上使用Apache平衡Tomcat 5.5,直到启动负载平衡点。 我有基于这个教程的问题。 我的web应用程序在所有tomcat实例的webapps / ROOT下。 我在httpd.conf
有这个configuration:
<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时,我得到了这个警告:
[警告] NameVirtualHost *:80没有VirtualHosts
我正确的方式使我的应用程序与80端口工作? 我怎样才能configuration这个警告?
对于您的方案,您将不需要负载平衡。 在你的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
指令将流量分配给你的tomcats。