Мы планируем перейти с Websphere на Tomcat. Я пытаюсь отправить трафик на tomcat с веб-сервера apache на основе директив виртуального хоста на веб-сервере apache.
После некоторой игры у меня это вроде как работает, но я замечаю, что если у меня есть директива JKMount в первом VirtualHost в apache, все virtualHosts будут отправляться на сервер приложений. Если у меня есть JKMount в виртуальных хостах дальше в конфигурациях, то с запросом работает только этот VirtualHost.
Например, с конфигами ниже вот мои симптомы
mysite.com/Webapp1/ -> Я разрешаю соответствующее приложение mysite2.com/Webapp1/ -> Я разрешаю правильное приложение (плохо!) mysite.com/MonitorApp/ -> Я разрешаю правильное приложение mysite2 .com / MonitorApp / -> Я решаю использовать правильное приложение (плохо!) mysite.com/Webapp2/ -> Я НЕ попадаю в приложение (хорошее) mysite2.com/Webapp2/ -> Я разрешаю правильное применение
Вот как выглядят виртуальные хосты моего веб-сервера.
<VirtualHost 255.255.255.1:80>
ServerName mysite.com
ServerAlias aliasmysite.ca
##all our rewrite rules
JkMount /Webapp1/* LoadBalanceWorker
JKmount /MonitorApp/* LoadBalanceWorker
</VirtualHost>
<VirtualHost 255.255.255.2:80>
ServerName mysite2.com
ServerAlias aliasmysite2.ca
##all our rewrite rules
JkMount /Webapp2/* LoadBalanceWorker
</VirtualHost>
мы запускаем веб-сервер apache 2.2.10 и tomcat 7.0.29 на Solaris10
Я разместил здесь изображение нашей архитектуры. http://imgur.com/IFaA6Rh
Я НЕ определил VirtualHosts на Tomcat. Основываясь на том, что я прочитал, я понимаю, что это необходимо только в том случае, если я напрямую обращаюсь к Tomcat.
Любая помощь приветствуется.
редактировать
Вот мой worker.properties.
worker.list= LoadBalanceWorker,App1,App2
worker.intApp1.port=8009
worker.intApp1.host=10.15.8.8
worker.intApp1.type=ajp13
worker.intApp1.lbfactor=1
worker.intApp1.socket_timeout=30
worker.intApp1.socket_connect_timeout=5000
worker.intApp1.fail_on_status=302,500,503
worker.intApp1.recover_time=30
worker.intApp2.port=8009
worker.intApp2.host=10.15.8.9
worker.intApp2.type=ajp13
worker.intApp2.lbfactor=1
worker.intApp2.socket_timeout=30
worker.intApp2.socket_connect_timeout=5000
worker.intApp2.fail_on_status=302,500,503
worker.intApp2.recover_time=30
worker.LoadBalanceWorker.type=lb
worker.LoadBalanceWorker.balanced_workers=intApp1,intApp2
worker.LoadBalanceWorker.sticky_session=1
Каждый виртуальный хост в Apache «захватывает» запрос, используя ServerName и ServerAlias. В этом случае запрос не обрабатывается другими виртуальными хостами. Таким образом, согласно вашему conf:
Запросы с заголовком узла mysite.com или aliasmysite.ca получат доступ только к URI: s / Webapp1 / * и / MonitorApp / *.
Точно так же запросы с заголовком хоста mysite2.com или aliasmysite2.ca получат доступ только к URI / Webapp2 / *.
Судя по вашему описанию (которое не совсем понятно) ваших симптомов, я считаю, что эти комбинации не работают, что, следовательно, было бы вполне ожидаемым результатом:
Последний, похоже, был намерен, а первые два - нет. Если это правильно, то вот мое предложение:
<VirtualHost 255.255.255.1:80>
ServerName mysite.com
ServerAlias aliasmysite.ca
JkMount /Webapp1/* LoadBalanceWorker
JKmount /MonitorApp/* LoadBalanceWorker
</VirtualHost>
<VirtualHost 255.255.255.2:80>
ServerName mysite2.com
ServerAlias aliasmysite2.ca
JkMount /Webapp1/* LoadBalanceWorker
JkMount /Webapp2/* LoadBalanceWorker
JKmount /MonitorApp/* LoadBalanceWorker
</VirtualHost>
Надеюсь, это достаточно ясно, чтобы вести вас, даже если я неверно истолковал ваше описание.
Я не уверен, правильно ли я понимаю вашу архитектуру, но похоже, что у вас есть 2 группы веб-сайтов, которые вы пытаетесь разделить с помощью доменных имен. У вас есть только один рабочий "LoadBalanceWorker". У вас должно быть два работника: один для общедоступных приложений, другой - для приложений сотрудников.