我有三个不同的应用程序的三个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端口一起工作?我该如何配置此警告?
答案 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指令。