3中,只有一个mod_jk worker不工作

我有一个服务器configuration与Apache HTTP服务器2.2与基于名称的虚拟主机连接到单独的Tomcat 7虚拟主机使用mod_jk连接器。

以前,2个Apache虚拟主机已成功地从各自的Tomcat虚拟主机提供单独的应用程序,但是最近当我尝试多一个主机进行configuration时,新主机不能正常工作。

这里是Tomcat的server.xml中的主机声明:

<Host name="localhost" appBase="webapps/localhost" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> <Host name="xx1.com" appBase="webapps/xx1" unpackWARs="true" autoDeploy="true"> <Alias>www.xx1.com</Alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="xx1_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> <Host name="xx2.com" appBase="webapps/xx2" unpackWARs="true" autoDeploy="true"> <Alias>www.xx2.com</Alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="xx2_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> <Host name="xx3" appBase="webapps/xx3" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="xx3_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> 

这里是Apache虚拟主机configuration:

 <VirtualHost *:80> ServerName xxx.com ServerAlias *.xxx.com JkMount /* newworker </VirtualHost> <VirtualHost *:80> ServerName xx2.com ServerAlias *.xx2.com JkMount /* worker2 </VirtualHost> <VirtualHost *:80> ServerName xx1.com ServerAlias *.xx1.com JkMount /* worker1 </VirtualHost> 

Worker.properties文件的内容是:

 worker.list=worker1, woker2, newworker worker.worker1.type=ajp13 worker.worker1.host=xx1.com worker.worker1.port=8009 worker.worker2.type=ajp13 worker.worker2.host=xx2.com worker.worker2.port=8009 worker.newworker.type=ajp13 worker.newworker.host=xx3 worker.newworker.port=8009 

这里是mod_jk日志:

 [error] ajp_validate::jk_ajp_common.c (2748): worker newworker can't resolve tomcat address xx3 

我认为问题在于Tomcat,因为何时从主机pipe理器应用程序访问主机xx3,应用程序无法运行。 而xx1.com和xx2.com的响应非常好。

注意:xx1.com和xx2.com是公共域,它们的Alogging指向正在运行apps的服务器,而xx3是本地doamin,除了hosts文件中的条目,没有独有的DNSlogging。

经过很多时间,我已经注意到worker.host参数是基于DNSparsing主机名,而不仅仅是Tomcat中运行的(虚拟)主机。 虽然我觉得很奇怪,但这是问题的根源。

有人可以帮助我configuration服务器的预期结果。

Apache无法parsingworker的主机名xx3

您可能在xx1.comxx2.com /etc/hosts有硬编码的条目,但是不能用于xx3

你可以通过发出:

 $ getent hosts xx2.com 

并比较:

 $ getent hosts xx3 

另请注意 :

客户端通常使用主机名来标识他们希望连接的服务器。 该主机名也包含在HTTP请求标头中。 Tomcat从HTTP头中提取主机名并查找具有匹配名称的主机。 如果找不到匹配,请求将被路由到默认主机。 默认主机的名称不必与DNS名称匹配(尽pipe可以),因为DNS名称与主机元素的名称不匹配的任何请求都将路由到默认主机