如何使用 tomcat 在同一台服务器上托管两个站点?

如何使用 tomcat 在同一台服务器上托管两个站点?

我需要使用 Tomcat 托管两个站点。这是我的 Apache conf 中的内容:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /root/tomcat/webapps/PROJECT
    ServerName www.project.com
</VirtualHost>    

要访问该网站,我只能通过 访问www.project.com/project。我不能访问索引,例如:www.project.com

当我想托管另一个网站时该怎么办?

我的想法:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /root/tomcat/webapps/PROJECT1
    ServerName www.project1.com
</VirtualHost>    

但我没有成功。

我该如何解决这个问题?

答案1

结合使用 Apache 和 Tomcat,无法按照您设想的方式传递 JAVA“文件”(servlet、jsp 等)。按照您在此处执行的方式,您只能访问文件,并且根据其 mime 类型传递文件。

作为第一步,您应该阅读有关反向代理以及您的情况下的模块mod_proxy_http和或的信息mod_proxy_ajp。我不知道您的经验水平如何,所以我只是写了一些您应该适应的内容:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
<IfModule mod_proxy_ajp.c>
   <Location />
      ProxyPass ajp://127.0.0.1:8009/PROJECT
      ProxyPassReverse ajp://127.0.0.1:8009/PROJECT
   </Location>
</IfModule>

在标准 Linux 环境中,您可以使用软件包提供商安装这些模块,并使用 启用它们a2enmod mod_proxy_ajp。这也应该mod_proxy作为依赖项安装。在这种情况下,您可以删除上面提到的 LoadModule 指令。

<Location />指令用于处理指向您域的所有请求。因此www.project.com提供索引。还有一些注意事项(使用 mod_proxy 时的安全性)等,但它应该为您指明正确的方向。

相关内容