Apache Tomcat配置-一个Apache服务器和多个Tomcat站点




在为多个tomcat站点配置apache web服务器时,我遇到了一个问题
这是我的要求:
1.Apache Web服务器-单实例
2.跨3个不同的多个tomcat实例的相同应用程序(WebApps(
前端服务器和应用程序服务器都托管在一台服务器上(Solaris(

当我使用特定的站点名称访问Apache服务器时,它应该只从该tomcat站点中获取应用程序

我在谷歌上浏览不同的网站时尝试了各种选项,但不幸的是,到目前为止没有任何选项解决这个问题。。

我在vhost-conf文件和应用服务器上的workers.properties(Apache Server(和Server.xml中的当前修改如下。

<VirtualHost x.x.x.x:80>
  ServerAdmin webmaster@xxx.com
  DocumentRoot /opt/htdocs/test-1.xxx.com/docs
  ServerName x.x.x.x
  ServerAlias test1-1.xxx.com
:
:
:
</VirtualHost>
<VirtualHost x.x.x.x:80>
  ServerAdmin webmaster@xxx.com
  DocumentRoot /opt/htdocs/test-2.xxx.com/docs
  ServerName x.x.x.x
  ServerAlias test1-2.xxx.com
:
:
:
</VirtualHost>
<VirtualHost x.x.x.x:80>
  ServerAdmin webmaster@xxx.com
  DocumentRoot /opt/htdocs/test-3.xxx.com/docs
  ServerName x.x.x.x
  ServerAlias test1-3.xxx.com
:
:
:
</VirtualHost>

Worker.properties

worker.list=tomcat1,tomcat2,tomcat3
worker.tomcat1.type=ajp13
worker.tomcat1.host=test1-1.xxx.com
worker.tomcat1.port=8009

worker.tomcat2.type=ajp13
worker.tomcat2.host=test1-2.xxx.com
worker.tomcat2.port=48009

worker.tomcat3.type=ajp13
worker.tomcat3.host=test1-3.xxx.com
worker.tomcat3.port=58009

Server.xml-workers.properties中提到的每个实例的端口号都不同。下面是我在Server.xml中对每个tomcat实例所做的修改根据主机名请假设所有3个tomcat实例的所有端口号都不同

tomcat-1

<Engine name="Catalina" defaultHost="test1-1.com" jvmRoute="tomcat1">
<Host name="test1-1.com"  appBase="webapps"  
            unpackWARs="true" autoDeploy="true">
<Engine name="Catalina" defaultHost="test1-2.com" jvmRoute="tomcat2">
<Host name="test1-2.com"  appBase="webapps"  
            unpackWARs="true" autoDeploy="true">
<Engine name="Catalina" defaultHost="test1-3.com" jvmRoute="tomcat3">
<Host name="test1-3.com"  appBase="webapps"  
            unpackWARs="true" autoDeploy="true">

问题是,每次我启动任何tomcat网站时,每次它从第一个tomcat服务器(即test1-1.com (上获取网络应用程序时

例如。如果我打开,http://test1-2/home/index尽管网站正在打开,但它正在从"test1-1/com"网站中获取webapps目录。。

我的要求是-当我打开http://test1-2/home/index,它应该选择托管在tomcat site-2上的网络应用程序,即test1-2.com

请告诉我,我在这里做什么不对。。如果你需要更多信息,请随时问我

不幸的是,我不能使用mod_jk模块,因为我所有的webapps目录结构在所有3个tomcat实例中都是相同的,所以模式匹配是不可能的

提前感谢

最后,我能够在多个服务器上完成大量更改,从而完成这项任务。实际上,上面的配置是正确的,只是vhost-config文件中缺少"NameVirtualHost"标记,CMS上的一些配置是从中获取内容的。。

--干杯——

您的虚拟主机配置缺少JKMount选项,该选项告诉apache应该使用哪个工作进程来提供内容:https://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html

您也可以使用apacheProxyPass来实现几乎相同的结果。在您的情况下,jkmount是一个更好的选择,因为如果您有多个tomcat为同一应用程序提供服务,则更容易创建一个配置来负载平衡流量并保证HA。

关于apache配置,我建议您如下:

  1. <VirtualHost x.x.x.x:80>更改为<VirtualHost *:80>,使apache在端口80的任何接口上侦听。(告诉apache使用基于名称的VirtualHost,而不是基于ipBased(
  2. 我看到您的ServerName x.x.x.x在每个虚拟主机中都是一样的:这不起作用。ServerName和ServerAlias在您的配置中应该是唯一的,或者,如果我没有记错的话,apache读取的第一个将匹配,其他将被忽略

最新更新