Apache + Tomcat: з яким слід обробляти SSL? Переадресація на основі проксі-серверів?


1

Наразі у нас програма 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-адреси?

дякую, дель

Відповіді:


2

Що стосується обробки SSL, то це типовий випадок використання SSL Offloading. Оскільки ви, ймовірно, будете використовувати один SSL-сертифікат (сертифікат на ваше доменне ім’я), у вас буде один апаш і n Tomcats. Отже, apache є кращим місцем для обробки SSL. Спілкуватися між Apache та Tomcat слід через AJP, а не http або https ..

Я написав покрокову інструкцію щодо розвантаження SSL, можливо, вам буде корисний. І посилання на нього: http://milestonenext.blogspot.de/2012/09/ssl-offloading-with-modjk-part-1.html


1

Ми завжди використовуємо Apache (або Nginx) для доступу та "SSL-розвантаження", як деякі називають це. Робили це роками в різних виробничих системах з різними вимогами. Apache надає вам велику гнучкість та багато можливостей, якими ви можете скористатися, щоб ви могли зберегти конфігурацію сервера додатків максимально простою, тонкою та зрозумілою. Я також рекомендую використовувати mod_jk (тобто AJP) для з'єднання Apache і Tomcat. Tomcat за замовчуванням слухає запити AJP на порт 8009.

Що стосується ваших питань щодо переадресації: це можна зробити легко, використовуючи комбінацію mod_rewrite, mod_jk та, можливо, декілька Location/ LocationMatchдиректив у вашій конфігурації Apache. Залежить від того, що саме ви хочете зробити. Потрібно більше деталей, а краще, окремого питання.


1

Це можливо. Я вважаю за краще мати Apache як фронтенд для всіх веб-серверів бекенда, включаючи кілька версій Tomcat (що дозволяє простіше оновити на кожного клієнта), IIS та деякі пристрої.

Розвантаження SSL описано на веб- сайті http://www.invantive.com/about-invantive/news/entryid/897/ssl-offloading-for-apache-tomcat .

Щодо питання 2 (вибіркове перенаправлення):

ми зазвичай використовуємо два підходи:

  • Всі подібні екземпляри програми доступні за однією URL-адресою за допомогою віртуального хоста. Наприклад, app1.invantive.com або that-other-app.invantive.com.
  • Кожна група користувачів отримує різну URL-адресу всередині цього віртуального хоста, а також певну форму поділу DTAP. Наприклад, app1.invantive.com/acme-corporation/production, app1.invantive.com/acme-northpole-corporation/test.

Якщо ви використовуєте Apache лише для маршрутизації трафіку, ви рідко, якщо коли-небудь знадобиться замінити його. Таким чином, він стає надійним компонентом, який дозволяє легко переносити програми та сайти на нові місця, і вам просто потрібно перенаправити правила маршрутизації Apache. Ви більше не маєте змін у DNS та проблем із TTL.


0

Я насправді не так добре знайомий з програмами tomcat або архітектурою (я працюю лише декількома в своїй організації), тому можуть бути інші способи вирішити масштабні реалізації; однак, SSL може оброблятися Tomcat, Apache або перевантажуватися на балансир навантаження, а інші речі, які ви згадали, можна легко обробляти за допомогою mod_rewrite.

Є кілька модулів Apache, які роблять саме це (з тоннами хаутів і посібників в мережі). Ознайомтеся з mod_proxy, mod_proxy_ajp або, можливо, mod_jk. Ви хочете зробити кілька досліджень, щоб виявити найкраще підходять для вас.

Сподіваємось, це все-таки буде хорошим початковим пунктом дослідження.

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.