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