2016-09-06 111 views
0

我想在Linux服务器上拥有多个tomcat实例,并且每个实例都会部署一个Web应用程序ROOT。在没有端口号的tomcat中访问Web应用程序

在访问应用程序时,URL格式为:而我不希望最终用户记住应用程序的IP地址或端口。

由于在Linux服务器中会使用多个实例,所以默认80端口(http)和443(https)不会有帮助。

这个想法是公开应用程序的DNS名称,看起来像Apache HTTP服务器会帮助我解决这个问题。方法是对的吗?

我认为Apache服务器应该是每个Linux服务器一个,而每个tomcat实例一个。这可以证实吗?

使用Apache Tomcat版本是8.5.4和计划是去与Apache HTTP服务器版本2.4

回答

0

设置一个Apache HTTPD(或任何其他)作为前服务器是一个不错的办法。

由于您不想在网址中使用:端口标记,因此您无法在每台服务器上使用多个Apache HTTPD,至少在标准HTTP/HTTPS端口中不能使用一次在同一台服务器上有多个HTTPD。

如果您打算同时使用http和https,则应为每个虚拟主机创建至少一个虚拟主机。在使用SSL 443端口时,为基于名称的虚拟主机创建虚拟主机存在限制,因此如果您希望启用多个HTTPS端口,则需要基于IP的虚拟主机。

This is the Apache HTTPD 2.4 virtual host documentation

然后,您可以使用mod_proxytomcat connector将请求转发给每个Tomcat。我个人根据当前需求选择一个或者其他,特别是如果Tomcat和Apache HTTPD中的上下文之间存在直接对应关系(在这种情况下,我使用AJP)或者需要重写它(mod_rewrite):

httpd://apache.httpd/context1 -> tomcat:XXXX/context1 (ajp tomcat connector) 

httpd://apache.httpd/ -> tomcat:XXXX/context2 (mod_rewrite) 

httpd://apache.httpd/context3 -> tomcat:XXXX/context4 (mod_rewrite)