Это то, для чего нужен обратный прокси. И довольно просто настроить Apache для этого.
Запустить один Apache для основного интерфейса и сделать так, чтобы он служил по умолчанию http / https porst (80/443). Затем используйте его для прокси-запросов Vhost к отдельным службам следующим образом:
<VirtualHost *:80>
ProxyRequests off
ProxyPreserveHost On
ServerName bb.aaa.com
<Location />
ProxyPass http://127.0.0.1:81/
ProxyPassReverse http://127.0.0.1:81/
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ProxyRequests off
ProxyPreserveHost On
ServerName cc.aaa.com
<Location />
ProxyPass http://127.0.0.1:8080/
ProxyPassReverse http://127.0.0.1:8080/
Order allow,deny
Allow from all
</Location>
</VirtualHost>
# ...
Создайте по одному для каждой службы. Таким образом, ваш сервер будет маршрутизироваться в зависимости от имени домена в запросе, а не от номера порта TCP.
Конечно, если вы сделаете это, вы не сможете использовать порты по умолчанию (80/443) для своих внутренних служб, так как ваш интерфейс Apache нуждается в этом. Но вы также можете использовать Apache, запускающий службу на портах по умолчанию, в качестве прокси-сервера.
В основном вы получите такой тип установки:
┌────────────┐
┌┄┄┄┄┤ apache2:81 │
┆ └────────────┘
┆ ┌──────────────┐
├┄┄┄┄┤ tomcat1:8080 │
┌───────────────────┐ ┆ └──────────────┘
internet┄┄┄┤front-end apache:80├┄┄┄┄┤ ┌──────────────┐
└───────────────────┘ ├┄┄┄┄┤ tomcat2:8081 │
┆ └──────────────┘
┆
.
.
Этот тип Настройка очень гибкая, позволяя вам реализовывать такие вещи, как службы балансировки нагрузки и маршрутизации на основе <Location>
вместо имени домена или номера порта. До CORS это был стандартный способ реализации микросервисов с использованием одного Apache или Nginx для маршрутизации по пути расположения / URL-адресу.