Маршрутизация доменов третьего уровня во внутренние IP адреса

Как можно реализовать нечто подобное:

image

желательно с помощью стандартных системных утилит и устойчиво к большим нагрузкам
  • Вопрос задан
  • 6540 просмотров
Пригласить эксперта
Ответы на вопрос 7
Veshij
@Veshij
То что вам нужно — это не маршрутизация, а проксирование.
Все А-записи указывают на 172.23.45.34, а далее веб-сервер на этой машине в зависимости от заголовка Host проксирует запрос на один из бекендов. Настраивается штатными средствами в любом современном веб-сервере.
Ответ написан
@lesha_penguin
Если для Веб-приложений, то один из лучших вариантов — можно использовать nginx на шлюзе со следующей конфигурацией:
server{
listen 80;
server_name app1.domain.com;
location / {
proxy_pass 10.0.0.1:80;
proxy_set_header Host $http_host;
}
}
server{
listen 80;
server_name app2.domain.com;
location / {
proxy_pass 10.0.0.2:80;
proxy_set_header Host $http_host;
}
}
server{
listen 80;
server_name app3.domain.com;
location / {
proxy_pass 10.0.0.3:80;
proxy_set_header Host $http_host;
}
}


Плюсы:
+ Если Вы ВДРУГ захотите перенести приложение например app1 например на хостинг, то проблем не будет, это можно будет сделать прозрачно.
+ Вы полностью отвязанны от физического размещения
+ Если вдруг одно из приложений будет слишком нагруженным, вы сможете его запускать на нескольких машинах и использовать балансировку, Кеширование, да и прочие вкусности nginxа.

Минусы:
— Все вышесказанное только для http
Ответ написан
Комментировать
@lesha_penguin
Дополнение: Кстати, вышеуказанный метод с nginx-ом вовсе не конфликтует с указанным выше DNATом через iptables. Легко настроить dnat чтобы он пробрасывал 80 порт внутрь локальной сети на вход nginx-у.
Ответ написан
Комментировать
nur
@nur
Создаете поддомен, в его A запись указываете свои внутренний ип (хоть локалхост) и все. Через любую панель управления хостингом возможно
Ответ написан
Принцип работы простой — берёте у хостера ещё 3 внешних IP для хоста domain.com, прописываете их в A записях поддоменов и с них трафик (весь, или определенного протокола/портов) пускаете на внутренние хосты. Но, по-моему, смысл это имеет только если вам нужно чтобы доступа к внутренним хостам извне гарантированно не было кроме явно разрешенного и готовы ради этого пренебречь надёжностью: ляжет domain.com — лягут и поддомены. Проще, по-моему, не заморачиваться с единой точкой входа и каждому дать внешний адрес, если у вас нет балансировки и прочего.
Ответ написан
xaker1
@xaker1
Для вашей задачи если приемлемо разные порты использовать — то лучше именно по портам проксировать. Хотя все зависит от того, какого рода приложение. Для http — по заголовкам, ftp — никак (с одним ip).
Если протокол вашего приложения передает домен, то по нему.
Ответ написан
Комментировать
mark_ablov
@mark_ablov
как бы обращение идёт по ip к вашему серверу, и если протокол не предусматривает передачу имени хоста, то никак нельзя определить куда хочет податься клиент. HTTP передаёт DNS-имя в своём заголовке.
Если всё же нужна маршрутизация своего протокола, то думаю лучше либо его обернуть в HTTP, либо написать модуль для прокси, hoproxy, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы