3

我有三个不同应用程序的三个 tomcat 实例。他们在一台机器上使用 8080,8081,8082 端口。如何更改配置,以便用户能够从具有不同主机名的 80 端口访问?我已经在我的机器上安装了 Apache,并尝试使用以下教程对其进行配置:如何在 Windows 上使用 Apache 对 Tomcat 5.5 进行负载平衡,直到负载平衡点开始。我有基于本教程的问题。在所有 tomcat 实例中,我的 Web 应用程序都在 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 时,我得到了这个警告:

[警告] NameVirtualHost *:80 没有 VirtualHosts

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

4

1 回答 1

2

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

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。

于 2012-08-27T08:18:34.127 回答