【发布时间】:2015-07-29 13:49:37
【问题描述】:
在为多个 tomcat 站点配置 apache Web 服务器时,我遇到了一个问题。
这是我的要求:
1. Apache 网络服务器 - 单实例
2. 跨 3 个不同的多个 tomcat 实例的相同应用程序(WebApps)
前端服务器和应用服务器都托管在单个服务器上(Solaris)
当我使用特定站点名称访问 Apache 服务器时,它应该只从该 tomcat 站点获取应用程序
我在浏览 google 上的不同站点时尝试了各种选项,但不幸的是,到目前为止,没有任何选项可以解决此问题..
我在 vhost conf 文件和应用服务器上的 workers.properties (Apache 服务器) 和 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)获取 webapp 时
例如 如果我打开http://test1-2/home/index,那么虽然该站点正在打开,但它正在从“test1-1.com”站点获取 webapps 目录。
我的要求是 - 当我打开 http://test1-2/home/index 时,它应该选择托管在 tomcat site-2 即 test1 上的 webapps -2.com
请告诉我,我在这里做错了什么......如果您需要更多信息,请随时问我
不幸的是我不能使用 mod_jk 模块,因为我所有的 webapps 目录结构在所有 3 个 tomcat 实例中都是相同的 - 所以模式匹配是不可能的
提前致谢
【问题讨论】:
-
考虑使用 nginx 而不是 apache。它更容易配置并且可能更高效。