Назад | Перейти на главную страницу

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

Я ни в коем случае не являюсь экспертом в отношении apache (в нашем случае версия apache для Oracle, 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)?

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

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

Таким образом, вам больше не нужны дополнительные виртуальные хосты и вы сможете использовать 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

Для каждого виртуального хоста, т.е. 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>