Назад | Перейти на главную страницу

Обслуживание Tomcat по под-URI

У меня есть много служб, подключенных к одному домену, поэтому я надеялся обслуживать Tomcat, скажем, http: // имя_сервера / tomcat, с Nginx в качестве обратного прокси для HTTP-коннектора Tomcat.

Конфигурация Nginx настолько проста, насколько это возможно:

location /tomcat {
   include proxy_pass.conf;
   proxy_pass http://127.0.0.1:8080;
}

Если я оставлю все как есть, Tomcat не сможет разрешить запросы, начинающиеся с /tomcat, но если я установил иначе alias /; в Nginx Tomcat работает нормально, но, к сожалению, он не может определить путь, по которому он обслуживается, поэтому все URL-адреса отсутствуют /tomcat.

Я прошел через ссылка на конфигурацию для Tomcat 7 несколько раз, но я не смог найти ничего, что позволило бы мне настроить Tomcat для обслуживания всех приложений под /tomcat path или иным образом добавьте его в качестве префикса к пути контекста для каждого приложения.

Я мог вручную настроить server.xml с <context/> контейнер для каждого приложения, но это заставило бы меня почувствовать себя неловко. Может ли кто-нибудь сказать мне, что мне явно не хватает?

Я пытался делать то же самое несколько раз за последние 4-5 лет, и я пробовал много разных способов, но все попытки терпели неудачу. Наконец, я пришел к выводу, что (а) это невозможно (б) даже если каким-то образом это можно сделать, это не стоит усилий. Хотя, я был бы приятно удивлен, если бы кто-то в этом разобрался.

Не тестировалось, но лучше всего было бы загрузить Java Bridge в APACHE2 / PHP, чтобы он запускал Java-код при его обнаружении.

http://www.dsl.uow.edu.au/~sk33/php5java.htm

По-видимому, Tomcat 6 представил механизм для достижения этой цели, добавив к папке webapp или имени файла .war префикс, разделенный хешем. Итак, например:

${catalina.base}/webapps/tomcat#app1
${catalina.base}/webapps/tomcat#app2.war

... сделает оба доступными через http: // локальный: 8080 / tomcat / app1 / и http: // локальный: 8080 / tomcat / app2 /соответственно, без дальнейшей настройки.

Это несколько загадочно объясняется в Tomcat Ссылка на контекстный контейнер, но смотри это полезное сообщение в списке рассылки Tomcat-users.

К сожалению, есть загвоздка: очевидно, Cocoon (до 2.1.11) подавляется веб-приложениями, пути которых содержат хеш (см. https://issues.apache.org/jira/browse/COCOON-2270).

Итак, когда у вас нет веб-приложений на основе Cocoon, работающих внутри Tomcat, добавление префикса «hashed» к имени их папки кажется возможным решением.