Apache и JBoss используют порт 80 одновременно - PullRequest
4 голосов
/ 31 августа 2009

У меня есть и Apache 2, и JBoss 4.2.3 на одной машине, и я хотел бы, чтобы они оба использовали порт 80. Я вижу несколько способов, которыми люди делают это mod_jk, mod_proxy, но я не уверен, какой лучшее.

Мне не нужно балансировать нагрузку, но мне нужен HTTPS.

1 Ответ

7 голосов
/ 31 августа 2009

У вас не может быть двух приложений, прослушивающих один и тот же порт tcp (80) одновременно. Вы можете использовать mod_jk для перенаправления http-запросов на порт 80 с сервера Apache на сервер JBoss. Это метод, с которым я больше всего знаком и предпочитаю. mod_proxy также должен работать, но я считаю, что этот метод немного сложнее.

Настройка https на Apache, вероятно, лучше всего рассматривать как отдельную тему. Существуют проблемы с приобретением ssl-сертификата, созданием самозаверяющего сертификата и т. Д.

Существует два шага для настройки mod_jk для маршрутизации запросов от сервера Apache к серверу JBoss:

Настройте веб-сервер Apache для пересылки некоторых запросов на сервер JBoss.

Конфигурация Apache будет отличаться в зависимости от используемого вами дистрибутива Apache (windows, RHEL, debian, собранный из исходного кода и т. Д.), Но концепции должны быть одинаковыми для любой установки Apache.

Вам необходимо скачать mod_jk для вашей платформы с веб-сайта tomcat:
http://tomcat.apache.org/download-connectors.cgi
Поставщик ОС может предоставить вам двоичный файл, поэтому сначала проверьте его. Вы также можете скомпилировать mod_jk самостоятельно, если хотите.

Скопируйте двоичный файл mod_jk (mod_jk.so для системы Linux / UNIX, не уверен насчет окон) в каталог модулей серверов Apache (это зависит от используемого вами дистрибутива Apache).

Добавьте эквивалентную директиву к вашей конфигурации Apache:

LoadModule jk\_module /usr/lib/apache2/modules/mod\_jk.so

Вы должны добавить два файла конфигурации в каталог конфигурации Apache: mod_jk.conf и worker.properties. Вы должны включить mod_jk.conf из основного файла конфигурации Apache:

Include /etc/apache2/mod\_jk.conf

Файл worker.properties включен mod_jk.conf с директивой JkWorkersFile.

Более подробные настройки для mod_jk.conf можно найти на странице документации tomcat:
http://tomcat.apache.org/connectors-doc/reference/apache.html

Важные директивы:
JkWorkersFile (указывает, где находится файл worker.properties)
JkMount (точка монтирования для сопоставления URI с рабочим Tomcat)

Пример:

JkWorkersFile /etc/apache2/workers.properties<br>
JkMount  /examples/*  myworker<br>
JkMount  /examples    myworker

Эти директивы сопоставляют URI / examples и / examples / с работником tomcat myworker.

Концептуально вы можете думать о работнике как о представлении экземпляра Tomcat или JBoss, а о монтировании как о способе сопоставления URI с работником. Этот способ представления вещей позволяет одному серверу Apache быть внешним интерфейсом для нескольких серверов Tomcat или JBoss. Это может быть удобно, если у вас есть только один IP-адрес, который вы можете использовать, но хотите запустить несколько серверов приложений на одном сервере Apache.

Файлы worker.properties описывает сервер Tomcat или JBoss, к которому будет подключаться сервер Apache. Важные записи в этом файле:

worker.list=myworker<br>
worker.tomcat.type=ajp13<br>
worker.tomcat.host=localhost<br>
worker.tomcat.port=8009

Существуют и другие свойства работника, которые можно найти на странице документации tomcat для файла worker.properties:
http://tomcat.apache.org/connectors-doc/reference/workers.html

Настройка сервера JBoss для приема подключений от сервера Apache

Сервер JBoss настроен так, чтобы принимать соединения mod_jk через порт 8009 (порт ajp по умолчанию) из коробки, но полезно знать, где это настроить, если вы захотите изменить что-либо из этого в будущем.

Конфигурация находится в части сервера JBoss, основанной на tomcat, расположенной в $ {JBOSS_SERVER_CONFIGURATION} /deploy/jbossweb.sar/server.xml. Это для JBoss AS 5.1.0.GA, предыдущие версии находятся в аналогичном месте. Коннектор mod_jk настроен в разделе Коннектор для протокола AJP 1.3 и выглядит так:

<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"    redirectPort="8443" />

Наиболее распространенная причина изменения этого раздела - если у вас есть несколько серверов tomcat или JBoss, подключающихся к apache по протоколу AJP, вы можете настроить номер порта, который будет прослушивать соединитель AJP, чтобы не возникало конфликтов.

...