Как я могу использовать SSL через Apache с несколькими экземплярами Tomcat Webapp? - PullRequest
1 голос
/ 11 января 2011

В настоящее время у нас есть наше веб-приложение, которое является стандартным видом, главная страница http и информационные страницы, но перенаправляет на httpS (т.е. SSL) для входа в систему, действий пользователя и т. Д.

В настоящее время у нас есть все наши экземпляры веб-приложения (производство, тестирование, демонстрация и т. д.) развернуто в одном экземпляре Jetty, и мы можем получить к ним доступ через www.ourapp.com/test и www.ourapp.com/demo и, очевидно, www.ourapp.com для производства.

Проблема в том, что каждый раз, когда мы вносим изменения в один экземпляр, нам нужно перезапустить все экземпляры, а не в идеале.Кроме того, мне не особенно нравится использовать Jetty для производства, даже если наше приложение в настоящий момент не очень громкое.

Я пытаюсь перейти на Apache httpd для пересылки на несколько экземпляров tomcat, каждый из которых содержитдругой экземпляр нашего приложения.Это позволило бы мне выключить и перезапустить каждый экземпляр tomcat / app по отдельности.

Я установил установки множественных котов на разных портах, чтобы они не конфликтовали друг с другом (например, 8081, 8082, 8083), установил, что их порты разъема AJP отличались от друг друга (например, 8010, 8011, 8012) и httpd прослушивает порт 8090 в данный момент, чтобы не конфликтовать с текущим рабочим экземпляром, работающим на порту 80.

В httpd.conf у меня есть такие настройки, как;

JkMount / test * tomcatTest

А в working.properties у меня есть такие настройки, как;

worker.tomcatTest.port = 8010
worker.tomcatTest.host = localhost
worker.tomcatTest.type = ajp13
worker.tomcatTest.lbfactor = 100

httpd перенаправляет штраф на начальные целевые страницы.Проблемы возникают, когда мне нужно перейти на страницы SSL для входа в систему и т. Д. Каждая из установок Tomcat имеет незакомментированный коннектор SSL, а также порт меняется, 8444, 8445, 8446 и т. Д.

Надеюсь, вы увидитенастройки я пытаюсь достичь здесь.Мне просто нужна помощь, чтобы страницы не-SSL связывались со страницами SSL, как они обычно делают, если все они были в одном экземпляре Jetty / Tomcat, а Apache не выполнял всю переадресацию.Любые указатели, что мне нужно сделать здесь?

Ответы [ 3 ]

1 голос
/ 27 января 2013

Что вам нужно, так это на самом деле ssl-разгрузка: 1. Сконфигурируйте в пристани, какой путь или путь должен быть защищен с помощью ssl;2. Передняя пристань с Apache, и пусть Apache обрабатывает все SSSL вещи для причала.3. Сконфигурируйте jetty для принятия ssl-обработки apache. 4. Настройте несколько vhosts на apache (для одного ip), настройте apache для использования разных сертификатов SSL для каждого vhosts....

Пошаговое руководство по этой теме можно найти здесь:

http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html

1 голос
/ 27 февраля 2011

Если вы хотите использовать собственный SSL-коннектор Tomcat, вам придется перенаправить ваше приложение на порт Tomcat на хосте. Это не может быть обработано Apache. Это связано с тем, что Apache также должен иметь установленный SSL-сертификат каждого сервера Tomcat, и одновременно можно установить только один сертификат.

Было бы лучше использовать Apache для разрыва ваших SSL-соединений.

Настройте Apache с соответствующим сертификатом (см. [1] ниже) и включите SSL. Затем в своем определении VirtualHost для SSL снова добавьте все строки JkMount.

Например:

<VirtualHost _default_:443>
   JkMount /test* tomcatTest
</VirtualHost>

Это означает, что SSL-соединения будут обрабатываться Apache, а затем передаваться в Tomcat с помощью AJP. Это значительно упрощает настройку, поскольку все, что вам нужно в конфигурации Tomcat, - это разъем AJP.

[1] Вам понадобится сертификат со всеми возможными vhosts, которые вы хотите использовать. Создание одного из них немного выходит за рамки вопроса, но достаточно сказать, что вам необходимо указать subjectAltName в сертификате для каждого имени хоста, которое вы можете использовать. Если вы создаете новое приложение с новым именем хоста, вам необходимо восстановить сертификат.

Кроме того, мне не особо нравится использовать Jetty для производства, хотя наше приложение в настоящее время не имеет большого объема.

Jetty в производстве абсолютно подходит для 99% случаев использования. Я часто обнаруживал, что Tomcat более капризный зверь, и часто заканчивал тем, что менял его на Jetty.

0 голосов
/ 04 июля 2017

Предположим, что ваш файл worker.properties содержит это.

> worker.list=balancer,stat   worker.tomcat1.type=ajp13
> worker.tomcat1.port=8109 worker.tomcat1.host=localhost  
> worker.tomcat2.type=ajp13 worker.tomcat2.port=8209
> worker.tomcat2.host=localhost   worker.tomcat3.type=ajp13
> worker.tomcat3.port=8309 worker.tomcat3.host=localhost
>     worker.balancer.type=lb worker.balancer.balance_workers=tomcat1,tomcat2,tomcat3  
> worker.stat.type=status

Затем вам нужно добавить JkMount / * balancer

в httpd-ssl.conf в

<Virtualhost> тег

<VirtualHost _default_:443>
#No change in other existing code
JkMount  /*  balancer   

> </VirtualHost>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...