alibek Опубликовано 20 декабря, 2013 Образовалась хитрая задача, пока теоретическая. Есть локальная сеть, в ней два веб-сервера, например 192.168.1.1:80 (сервер1) и 192.168.1.2:80 (сервер2). Выход в интернет в локальной сети предоставляет маршрутизатор, через NAT. Маршрутизатор пока абстрактный, скорее всего это будет компактный сервер на линуксе или FreeBSD. Нужно опубликовать в интернете оба сервера, причем оба должны быть на 80 порту. И на одном IP-адресе, поскольку предоставляется только один. Пока я вижу только такой работоспособный вариант: в сети есть третий кеширующий веб-сервер (либо прокси-сервер), на который маршрутизатор переадресует все входящие HTTP-запросы. Веб-сервер проверяет заголовок Host и в зависимости от его значения передает запрос на сервер1 или сервер2. А можно ли на самом NAT анализировать пришедший запрос и если это HTTP, то тогда в зависимости от заголовка Host транслировать на 192.168.1.1 или 192.168.1.2? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AKim Опубликовано 20 декабря, 2013 регистрируете домен и всё будет работать, как хотите. главное чтобы внешний ip был статичным. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 20 декабря, 2013 А заземлять обязательно или не важно? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 20 декабря, 2013 А можно ли на самом NAT анализировать пришедший запрос и если это HTTP, то тогда в зависимости от заголовка Host транслировать на 192.168.1.1 или 192.168.1.2? На микротике можно через L7 фильтр сделать, правда ресурсов очень много придется затратить, если объем трафика большой. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 20 декабря, 2013 На микротике можно через L7 фильтр сделать А с каких пор он научился декодировать протокол HTTP? Если просто по содержанию, то это не подойдет, содержимое "Host: сервер1" может в разных местах встретиться. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 20 декабря, 2013 Образовалась хитрая задача, пока теоретическая. Ничего хитрого, обычная. хттп лоад балансинсинг гуглить. Решается с помощью нгинх или хапрокси (более производительно под линухом) или хз с помощью ещё чего, что жуёт хттп запросы. Оригинальный IP юзера дописывается в заголовки хттп. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 21 декабря, 2013 Решается с помощью нгинх или хапрокси Я так понимаю, что это нередкая задача для балансировки нагрузки. Но у меня нагрузки большой нет, есть просто два веб-сервера на разных машинах, которые должны работать на стандартном порту. Поэтому интересуюсь, можно это на уровне NAT разрулить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dignity Опубликовано 21 декабря, 2013 Зачэм? Гланды через попу тоже можно вывернуть... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 21 декабря, 2013 Поэтому интересуюсь, можно это на уровне NAT разрулить? На L4 это сделать нельзя. Нужно нечто, понимающее http headers, например, nginx как было предложено выше Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BiWiS Опубликовано 21 декабря, 2013 уже написали nginx или haproxy Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 21 декабря, 2013 Поэтому интересуюсь, можно это на уровне NAT разрулить? Можно, но лучше отдать это софтине. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...