
Я хотел бы объяснить ситуацию, в которой мы находимся, а затем задать вопрос:
у нас есть домен:
- www.example.com
и следующие поддомены:
- форум.пример.com
- портал.example.com
- crm.example.com
и следующие приложения, размещенные на отдельных серверах:
- Форум-IP-адрес сервера: 1.1.1.1,порт: 1010
- портал-IP-адрес сервера: 2.2.2.2,порт: 2020
- крм-IP-адрес сервера: 3.3.3.3,порт: 3030
все серверы работают за брандмауэром
с другой стороны, у нас есть только один публичный IP-адрес:
10.10.10.10
Таким образом, чтобы связать локальные серверы с публичным IP-адресом, мы можем создать записи виртуального хостинга в брандмауэре и создать публичные порты следующим образом:
- 10.10.10.10:1010 будет указывать на 1.1.1.1:1010
- 10.10.10.10:2020 будет указывать на 2.2.2.2:2020
- 10.10.10.10:3030 будет указывать на 3.3.3.3:3030
затем мы настроим следующую запись A NAME в DNS ZONE:
- www.example.com - 10.10.10.10
так что идти кФорумприложение, пользователь должен ввести:
- www.example.com:1010
и так далее:
- www.example.com:2020 дляпортал
- www.example.com:3030 длякрм
Теперь вместо использования номера порта мы хотели бы использовать поддомен, например, если пользователь хочет перейти на форум, он просто введет:
- Форум.example.com
и то же самое для других приложений.
Можно ли это сделать без покупки новых публичных IP-адресов для каждого приложения?
Извините за длинный пост. Спасибо.
решение1
Я полагаю, что ваши различные приложения доступны через HTTP/HTTPS. В этом случае у вас есть несколько общих вариантов.
- Настройте свой веб-сервер на работу в качестве прокси-сервера для трех других поддоменов (www также является поддоменом) для предоставления услуг.
- Установите HTTP/HTTPS-прокси для всех поддоменов (а также домена).
Вы можете начать с одного варианта и перейти на другой позже. Некоторые контейнеры приложений имеют плагины для веб-серверов, которые добавляют заголовки прокси, специфичные для контейнера.
Если вы используете HTTPS, вам понадобится альтернативное имя субъекта для каждого домена в сертификате. В качестве альтернативы вы можете использовать SNI в front-end (веб-сервер или прокси), чтобы предоставить правильный сертификат клиенту (только для клиентов с поддержкой SNI).