2009-08-31 2 views
4

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

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

+0

Зачем вам нужны JBoss и Apache для прослушивания на одном и том же порту? Чего вы пытаетесь достичь? – skaffman

+0

Одна из причин заключается в том, что у вас есть только один IP-адрес, и вы хотите, чтобы ваше веб-приложение отвечало на порт 443 (необходимо, чтобы JBoss ответил на порт 443). На той же машине также размещен ваш репозиторий subversion, который доступен через apache также на порту 443. Используя описанный ниже метод, сервер apache может отвечать и обслуживать запросы svn на порт 443 и пересылать запросы на веб-приложения в JBoss через AJP. –

ответ

7

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

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

Есть два шага, чтобы выполнить конфигурационный mod_jk для маршрутизации запросов от сервера Apache на сервер JBoss:

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

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

Вам необходимо скачать mod_jk для вашей платформы с веб-сайта TOMCAT:
http://tomcat.apache.org/download-connectors.cgi
Ваш поставщик OS может обеспечить двоичный для вас, так что проверить там первым. Вы можете также скомпилировать 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 и workers.properties. Вы должны включить mod_jk.conf из главного конфигурационного файла Apache:

Include /etc/apache2/mod\_jk.conf 

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

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

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

пример:

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

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

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

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

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

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

Настройка сервера JBoss, чтобы принимать соединения с сервера Apache

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

Конфигурация находится в части, основанной на tomcat сервера JBoss, расположенной в $ {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" /> 

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