В настоящее время у нас есть приложение Tomcat, работающее с SSL на порту 443. Прямо сейчас у нас есть сервер apache, который принимает HTTP-запросы на порт 80 и перенаправляет на экземпляр Tomcat:
<VirtualHost *:80>
ServerName domain.com
ServerAlias domain.com
<LocationMatch "/">
Redirect permanent / https://domain.com/
</LocationMatch>
</VirtualHost>
Tomcat обрабатывает SSL, потому что прокси-сервера нет, просто перенаправление на порт SSL:
<Connector
port="443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/app/ssl/domain_com.jks" keystorePass="ourpassword"
clientAuth="false" sslProtocol="TLS"/>
Мы хотим начать использовать веб-сервер apache в качестве прокси-сервера и, кроме того, выполнять перенаправления по IP-адресу для определенных приложений, которые должны использоваться только хостами в заранее определенном диапазоне IP-адресов. Мы также хотели бы перенаправить IP-адреса, которые не соответствуют заранее определенному списку, на статическую html-страницу, размещенную на сервере Apache.
Мой первый вопрос: следует ли мне продолжать обрабатывать SSL на стороне Tomcat или мне следует использовать apache с SSL при перенаправлении на «незащищенный» порт Tomcat?
Есть ли способ перенаправить на разные приложения (и, возможно, на хосты) в зависимости от входящего IP-адреса?
спасибо дель
Что касается обработки SSL, это типичный вариант использования разгрузки SSL. Поскольку вы, скорее всего, собираетесь использовать один сертификат SSL (сертификат для вашего доменного имени), у вас будет один apache и n Tomcats. Таким образом, apache - лучшее место для обработки SSL. Тогда обмен данными между Apache и Tomcat должен осуществляться через AJP, а НЕ через http или https.
Я написал пошаговую инструкцию по разгрузке SSL, может быть вам полезно. И ссылка на него: http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html
Это возможно. Я предпочитаю использовать Apache в качестве внешнего интерфейса для всех внутренних веб-серверов, включая несколько версий Tomcat (позволяющих упростить обновление для каждого клиента), IIS и некоторых устройств.
Разгрузка SSL описана в http://www.invantive.com/about-invantive/news/entryid/897/ssl-offloading-for-apache-tomcat.
По вопросу 2 (выборочное перенаправление):
мы обычно используем два подхода:
Если вы используете Apache только для маршрутизации трафика, вам вряд ли когда-либо понадобится его заменять. Таким образом, он становится надежным компонентом, который упрощает перенос приложений и сайтов в новые места, и вам просто нужно перенаправить правила маршрутизации Apache. У вас больше нет изменений DNS и проблем с TTL.
Мы всегда используем Apache (или Nginx) для проксирования и «разгрузки SSL», как некоторые это называют. Делаем это годами в различных производственных системах с разными требованиями. Apache предоставляет вам большую гибкость и множество функций, которые вы можете использовать, чтобы вы могли сохранить конфигурацию сервера приложений как можно более простой, тонкой и легкой для понимания. Я также рекомендовал бы использовать mod_jk (т.е. AJP) для связи между Apache и Tomcat. Tomcat по умолчанию прослушивает запросы AJP на порту 8009.
Что касается ваших вопросов по перенаправлению: это можно легко сделать, используя комбинацию mod_rewrite, mod_jk и, возможно, несколько Location
/LocationMatch
директивы в вашей конфигурации Apache. Зависит от того, что именно вы хотите делать. Нужны подробности, а лучше отдельный вопрос.
Я действительно не так хорошо знаком с приложениями или архитектурой tomcat (в своей организации я использую только несколько), поэтому могут быть другие способы реализации крупномасштабных программ; однако SSL может обрабатываться Tomcat, Apache или выгружаться на балансировщик нагрузки, а другие вещи, о которых вы упомянули, можно легко обрабатывать с помощью mod_rewrite.
Есть несколько модулей Apache, которые делают именно это (с множеством практических рекомендаций и руководств в сети). Проверьте mod_proxy, mod_proxy_ajp или, возможно, mod_jk. Вы захотите провести небольшое исследование, чтобы найти наиболее подходящий для вас вариант.
Надеюсь, это будет хорошей отправной точкой для исследования.
Надеюсь это поможет!