Из 3, только один рабочий mod_jk не работает

У меня есть конфигурация сервера с Apache http Server 2.2 с виртуальными хостами на основе имен, подключенными к отдельным виртуальным хостам Tomcat 7 с помощью коннектора mod_jk.

Ранее 2 виртуальных хоста Apache успешно обслуживали отдельные приложения от соответствующих виртуальных хостов Tomcat, но недавно, когда я попытался подключить еще один хост к конфигурации, новый хост не работал.

Вот объявление хоста в файле 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:

<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, потому что, когда доступ к узлу xx3 из приложения host-manager, приложение не запускается. Принимая во внимание, что xx1.com и xx2.com отвечают очень хорошо.

Примечание: xx1.com и xx2.com являются публичными доменами, записи A которых указывают на сервер, на котором работают приложения, тогда как xx3 является локальным доменом без исключительной записи DNS, за исключением записи в файле hosts.

После того, как я потратил много времени, я заметил, что параметр worker.host разрешает имя хоста на основе DNS, а не только (виртуальные) хосты, работающие в Tomcat. Хотя я нахожу это очень странным, это коренная причина проблемы.

Может кто-нибудь помочь мне настроить сервер для желаемого результата.

1 ответ

Решение

Apache не может разрешить имя хоста xx3 рабочего.

У вас, вероятно, есть жестко запрограммированные записи в /etc/hosts за xx1.com а также xx2.com, но не для xx3,

Вы можете узнать, выпустив:

$ getent hosts xx2.com

и сравнивая это с:

$ getent hosts xx3

Также обратите внимание, что:

Клиенты обычно используют имена хостов для идентификации сервера, к которому они хотят подключиться. Это имя хоста также включено в заголовки HTTP-запроса. Tomcat извлекает имя хоста из заголовков HTTP и ищет хост с соответствующим именем. Если совпадений не найдено, запрос направляется на хост по умолчанию. Имя хоста по умолчанию не обязательно должно соответствовать DNS-имени (хотя оно может), поскольку любой запрос, в котором DNS-имя не совпадает с именем элемента Host, будет направляться на хост по умолчанию.

Другие вопросы по тегам