我需要使用 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 时的安全性)等,但它应该为您指明正确的方向。