Я установил Apache и Tomcat в своей системе и хочу объединить их с помощью Mod_JK. Я создал рабочего mod_jk (ajp13_worker) и добавил виртуальный хост в свою конфигурацию Apache:
<VirtualHost *:80>
ServerName tomcat.mydomain.com
DocumentRoot /usr/local/tomcat/webapps/
# Tomcat
JkMount /* ajp13_worker
JkMount /*.jsp ajp13_worker
JkMount /*.jspx ajp13_worker
</VirtualHost>
и он работает нормально, я попадаю на страницу Tomcat по умолчанию. Приложения Manager тоже работают нормально.
Затем у меня есть приложение, которое находится в папке PATH-TO-TOMCAT / webapps / myapp. Он должен быть доступен под myapp.mydomain.com, поэтому я добавил второй виртуальный хост, на этот раз с «DocumentRoot / usr / local / tomcat / webapps / myapp». Но это не сработало: я всегда попадал на страницу Tomact по умолчанию, а не в корень моего приложения. Поэтому я использовал ModRewite, чтобы переписать запрос в контексте моего приложения. Виртуальный сервер Apache выглядит так:
<VirtualHost *:80>
ServerName myapp.mydomain.com
DocumentRoot /usr/local/tomcat/webapps/myapp/
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/myapp/.*
RewriteRule ^/(.*)$ /myapp/$1 [PT]
# Tomcat
JkMount /* ajp13_worker
JkMount /*.jsp ajp13_worker
JkMount /*.jspx ajp13_worker
</VirtualHost>
Этот виртуальный хост работает, запросы переписываются, и мое приложение доступно на myapp.mydomain.com. Но теперь мой Tomcat создает для каждого отдельного запроса новый сеанс, и количество сеансов увеличивается, когда несколько пользователей обращаются к странице.
Я попробовал несколько руководств, но большинство из них не помогло решить эту проблему. Я думаю, что что-то упускаю. Может ли кто-нибудь объяснить мне, как правильно настраиваются виртуальные хосты в комбинации Apache / Tomcat / Mod-JK?
Большое спасибо,
Клод
Хорошо, нашел. В Tomcat server.xml вы можете указать путь контекста для каждого хоста:
<Host name="app.mydomain.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="PATH-TO-TOMCAT/webapps/app"/>
</Host>
Моя ошибка заключалась в том, что я всегда пытался изменить параметр appBase и не знал об элементе Context!