В локальной сети крутятся несколько виртуальных машин, как web сервера, так и войс чаты, почтовик и.т.п.
Имеется только 1 внешний IP.
На данный момент стоит роутер Mikrotik 951, который НАТом по определенным портам раскидывает запросы на нужные сервера. Уверен, такая схема не совсем верная.
Будет ли верным такое решение, если на отдельной вирт. машину поставить Nginx, все входящие запросы отправлять на него, а уже посредством proxy_pass направлять запросы к нужным серверам и сервисам? Или через proxy_pass можно направлять только WEB запросы?
В идеале хочу, что бы например
domain.ru, site1.domain.ru, site2.domain.ru - ссылались на server-1
voice.domain.ru ссылался на server-2
mail.domain.ru кидал на server-3
Сейчас конечно так и работает, но всё делится только по портам на роутере.
Вообще, Nginx может проксировать HTTP, IMAP, POP3, SMTP, и RTMP с дополнительным модулем.
Но в вашем случае, это всё не нужно и nginx мог бы быть нужен только как HTTP прокси, если бы надо было сайты с разными доменами расположить на разных серверах во внутренней сети. В вашем же случае port forwarding вполне нормальное решение.
в моем случае - видимо потому что у меня только 1 выделенный IP на всё?
Мне бы хотелось, что бы определенный домен/субдомен был строго привязан к определенному серверу в локальной сети. На данный момент немного напрягает то, что например к моему серверу TeamSpeak можно подключиться по любому моему домену или субдомену настроенному в днс регистратора, всего лишь указав нужный порт.
Или же видимо свой сервер днс разворачивать-(
В случае HTTP, в каждом запросе содержится доменное имя, к которому идёт обращение. И по этому заголовку, на принявшей запрос стороне, можно на уровне HTTP распределять трафик на разные сервера.
В случае teamspeak, запрос на домен, на другой домен и запрос на ip совершенно идентичны для принимающей их стороны. Т.е. что бы вы не делали, у вас всегда будет
к моему серверу TeamSpeak можно подключиться по любому моему домену или субдомену настроенному в днс регистратора, всего лишь указав нужный порт.
Там домен нужен только для того, чтобы на клиенте превратить его в ip, и с клиента уже запрос идёт просто по ip, и мы не можем его приняв сказать, какой домен был прописан в настройках клиента.
То же и с почтой, кстати.
Развёртывание своего DNS вообще никак не повлияет на это всё. =)
Борис Сёмов, почему не повлияет?? Я же у регистратора укажу, что для domain.ru нужно использовать мой сервер днс, соответственно любые запросы связанные с domain.ru будут прилетать на мой днс сервер, который уже в локальной сети и будет распределять что и куда... Если придет запрос ts.domain.ru, то мой BIND9 должен будет направить его на определенный сервер, согласно настройкам... при этом, если он ошибется и введет ts7.domain.ru, то он не должен приконнектиться. Или я что-то путаю?
Александр, Путаете, и сильно. Ваш BIND должен будет в любом случае отдавать ваш _внешний_ адрес, иначе до вас не дойдёт трафик вообще. И никаким распределением DNS не занимается, только возвращает заданные адреса на определённые домены/подомены.
Александр, Он вам и не нужен. Вы решаете проблему, которой на самом деле просто не существует.
То, как сейчас у вас работает вполне нормально.
Например, если вам надо поднять несколько серверов TS, то вам надо просто поднять их на разных портах, либо да, на разных ip адресах, если хочется оставить порт "по умолчанию".
Но у вас же, как я понимаю, даже такой проблемы не стоит, а просто разные сервисы раскидываются по портам(причём своим стандартным) на разные сервера внутри сети. Это уже вполне нормальное решение и тут не надо что-то менять вообще.
P.S. Просто забудьте о жёсткой привязке к доменному имени где-то кроме сайтов. И рассматривайте доменное имя просто как способ не запоминать не удобный для этого ip.