Я попробовал поискать в Google, и единственные статьи, которые я нашел, сравнивая эти две, были с 2005 по 2002 год. Я только что настроил свой первый экземпляр Tomcat для запуска Jira для проекта, над которым я работаю. Я хочу проксировать это через порт 80 и apache. Насколько я могу судить, я могу легко перенаправить трафик с помощью mod_proxy. В чем разница с использованием mod_jk? Есть ли различия в производительности / безопасности между этими двумя модами? У кого-нибудь есть советы / опыт настройки пересылки через apache? Я управляю Дебианом Ленни.
Оба метода пересылают запросы от apache к tomcat. mod_proxy использует HTTP, который мы все любим. mod_jk использует бинарный протокол AJP. Основные преимущества mod_jk:
Небольшой недостаток заключается в том, что AJP основан на блоках фиксированного размера и может разбиваться на длинные заголовки, особенно запрашивать URL-адреса с длинным списком параметров, но вы редко можете иметь 8K параметров URL. (Это наводит на мысль, что вы делаете это неправильно. :))
Положение немного осложняется существованием mod_proxy_ajp. Между ними mod_jk является более зрелым из двух, но mod_proxy_ajp работает в той же структуре, что и другие модули mod_proxy. Я еще не использовал mod_proxy_ajp, но подумал бы о том, чтобы сделать это в будущем, поскольку mod_jk включает настройку вне Apache.
Имея выбор, я бы предпочел соединитель на основе AJP, в основном из-за моего второго заявленного преимущества, а не с точки зрения производительности. Конечно, если Atlassian не поддерживает ничего, кроме mod_proxy_http, это несколько связывает вам руки, но mod_jk действительно работает с JIRA.
Да, есть разница. Однако то, что вы решите использовать, будет зависеть от вашего приложения.
Например, mod_proxy будет работать как обычный обратный прокси, который будет пересылать только обычные заголовки, пока mod_jk будет функционировать как специальный соединитель, который пересылает не только обычные заголовки, но и некоторые другие переменные среды. Можно провести сравнение с scgi и Fastcgi разъемы.
Для работы с JSP вы должны использовать mod_jk для чего он был разработан. Использовать только mod_proxy при пересылке только на обычные веб-серверы (которые могут запускать другие ajp разъемы за ними).
[front apache]---proxy---[back apache]---ajp---[tomcat]
|
+--------- ajp----[tomcat]
Надеюсь это поможет.
mod_proxy будет действительно "проксировать" все запросы к tomcat, используя обычные соединители http.
mod_jk открывает соединения "ajp13" с сервером tomcat, которые отделены от обычных HTTP-коннекторов tomcat, и таким образом передает трафик.
JIRA официально не поддерживает размещение tomcat позади apache, если вы не используете mod_proxy_http
. Рекомендуемая конфигурация выглядит примерно так
/etc/httpd/vhosts.d/jira.company.com.conf
...
ProxyPreserveHost On
<Location />
ProxyPass http://localhost:8080/
</Location>
...
/opt/j2ee/domains/company.com/jira/tomcat/conf/server.xml
...
<Connector address="localhost" port="8080" URIEncoding="UTF-8"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
proxyName="jira.company.com" proxyPort="80"
disableUploadTimeout="true" />
...
Это должно заставить вас продолжить http
дайте мне знать, если вам нужен пример для https
отказ от ответственности: в настоящее время я являюсь сотрудником Atlassian, но не работаю в команде JIRA