我正在尝试在Linux服务器上安装多个tomcat实例,并且每个实例都会部署一个Web应用程序ROOT。
访问应用程序时,网址格式为:但我不希望最终用户记住应用程序的IP地址或端口。
由于Linux服务器中将使用多个实例,因此默认为80端口(http)和443(https)无法提供帮助。
我们的想法是公开应用程序的DNS名称,看起来Apache HTTP服务器可以帮助我解决这个问题。方法是对的吗?
我认为apache服务器应该是每个linux服务器一个,而每个tomcat实例一个。这可以确认吗?
Apache Tomcat版本是8.5.4,计划是使用apache http服务器版本2.4
答案 0 :(得分:0)
将Apache HTTPD(或任何其他)设置为前端服务器是一种很好的方法。
您将无法在每个服务器上使用多个Apache HTTPD,因为您不想在URL中使用:端口表示法,至少在更多内容中不可能使用标准HTTP / HTTPS端口在同一台服务器上同时使用一个HTTPD。
如果您打算同时使用http和https,则应为每个虚拟主机创建至少一个虚拟主机。在使用SSL 443端口时,为基于名称的虚拟主机创建虚拟主机存在限制,因此如果要启用多个HTTPS端口,则需要基于IP的虚拟主机。
This is the Apache HTTPD 2.4 virtual host documentation
然后,您可以使用mod_proxy或tomcat 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)