Как обрабатывать несколько приложений через порт 443

Я ни в коем случае не эксперт в отношении apache (в нашем случае Oracle-версии apache, OHS) и перенаправления ввода в httpd.conf. У нас есть несколько приложений, развернутых в WLS 10.3.5 на одном сервере, и мы хотели бы, чтобы все они были доступны через порт 443.

Конечно, не все приложения могут быть развернуты на 443, тогда мы получим сообщение об ошибке, что порт используется.

Например, у нас app1 развернут на 3443, app2 развернут на 4443 и app3 на 5443. Наш клиент хотел бы иметь возможность просто ввести https:///app1 (или app2 или app3), а не https://:3443/app1 (или:4443/app2 или:5443/app3).

Возможно ли сделать это в httpd.conf (или ssl.conf)? Можно ли сделать так, чтобы в URL-адресах использовалось только 443, а затем в файлах conf перенаправить туда, где приложения фактически развернуты (3443, 4443 и 5443)?

3 ответа

Если вы используете OHS, то лучше использовать файл mod_wl_ohs.conf плагина прокси для обратного прокси. В mod_wl_ohs.conf вы можете добавить строки ниже

введите описание изображения здесь

Проверьте http://docs.oracle.com/cd/E28280_01/web.1111/e37889/oracle.htm для получения дополнительной информации

Таким образом, вам больше не нужны дополнительные виртуальные хосты и вы используете OHS 443 для маршрутизации на несколько экземпляров weblogic.

Это, безусловно, может быть достигнуто, и то, как вы это сделаете, зависит от того, как работают ваши приложения; если они обслуживаются вашим веб-сервером, который просто прослушивает определенные порты, то вам необходимо изменить настройки, чтобы использовать VirtualHosts, как показано ниже:

<VirtualHost *:443>
    ServerAlias app1.com
    DocumentRoot /var/www/html/app1    #or however this app is configured   
    [the rest of your configuration directives for the app]
</VirtualHost>

<VirtualHost *:443>
    ServerAlias app2.com
    [As above but for app2]
</VirtualHost>

Принимая во внимание, что если ваши приложения обслуживаются другими процессами, прослушивающими отмеченные вами порты, вы можете настроить его, используя структуру, аналогичную описанной выше, но используя обратные прокси-серверы для обслуживания приложений через порт 443, например:

<VirtualHost *:443>
    ServerAlias app1.com
    ProxyPreserveHost on

    SSLProxyEngine On
    ProxyPass / http://localhost:5443/ #change the port here for the app in question
    ProxyPassReverse / http://localhost:5443/ # change the port here for the app in question

  SSLEngine on
  [SSL directives as appropriate for your requirements]
</VirtualHost>

<VirtualHost *:443>
    ServerAlias app2.com
    ProxyPreserveHost on


    SSLProxyEngine On
    ProxyPass / http://localhost:5443/ #change the port here for the app in question
    ProxyPassReverse / http://localhost:5443/ # change the port here for the app in question

  SSLEngine on
  [SSL directives as appropriate for your requirements]
</VirtualHost>

Таким образом, SSL обрабатывается веб-сервером, при этом запросы http передаются обратно тому приложению, которое прослушивает указанные порты, а приложения различаются по запрошенному имени хоста. Стоит отметить, что если приложения прослушивают эти порты и отвечают только по SSL, рекомендуется отключить SSL от них (и запустить его через Apache, как указано выше - после настройки также, конечно, закройте эти порты в брандмауэре. если они в данный момент открыты внешне).

Исходя из того, как вы описали свою ситуацию, это можно сделать с помощью ProxyPass. это модуль в Apache, который позволяет перенаправлять URL-запросы. Вот информация о apache.org

Для каждого vhost т.е. https://app1 вы добавите в настройки vhost

ProxyPass / https://app1:3443
ProxyPassReverse / https://app1:3443

Есть несколько хороших сайтов HowTo там. Но это должно привести вас в правильном направлении

Если они не заинтересованы в том, как выглядит URL, вы также можете использовать mod_rewrite, чтобы перенаправить их на правильный URL. Я не очень хорошо с этим синтаксисом, чтобы привести пример.

РЕДАКТИРОВАТЬ:

За 1 псевдоним хоста сервера. может перенаправить на основе сайта с

<VirtualHost *:443>
    ServerAlias myserver.com
    ProxyPreserveHost on

    SSLProxyEngine On
    ProxyPass /app1 http://localhost:3443/app1 #change the port here for the app in question
    ProxyPassReverse /app1 https://localhost:5443/app1 # change the port here for the app 

    ProxyPass /app2 https://localhost:4443/app2
    ProxyPassReverse /app2 https://localhost:4443/app2

    ProxyPass /app3 https://localhost:5443/app3
    ProxyPass /app3 https://localhost:5443/app3

  SSLEngine on
  [SSL directives as appropriate for your requirements]
</VirtualHost>
Другие вопросы по тегам