Jump to content

Recommended Posts

Posted

Образовалась хитрая задача, пока теоретическая.

Есть локальная сеть, в ней два веб-сервера, например 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?

Posted

регистрируете домен и всё будет работать, как хотите.

главное чтобы внешний ip был статичным.

Posted

А можно ли на самом NAT анализировать пришедший запрос и если это HTTP, то тогда в зависимости от заголовка Host транслировать на 192.168.1.1 или 192.168.1.2?

 

На микротике можно через L7 фильтр сделать, правда ресурсов очень много придется затратить, если объем трафика большой.

Posted

На микротике можно через L7 фильтр сделать

А с каких пор он научился декодировать протокол HTTP?

Если просто по содержанию, то это не подойдет, содержимое "Host: сервер1" может в разных местах встретиться.

Posted
Образовалась хитрая задача, пока теоретическая.

Ничего хитрого, обычная.

хттп лоад балансинсинг гуглить.

Решается с помощью нгинх или хапрокси (более производительно под линухом) или хз с помощью ещё чего, что жуёт хттп запросы.

Оригинальный IP юзера дописывается в заголовки хттп.

Posted

Решается с помощью нгинх или хапрокси

Я так понимаю, что это нередкая задача для балансировки нагрузки.

Но у меня нагрузки большой нет, есть просто два веб-сервера на разных машинах, которые должны работать на стандартном порту.

Поэтому интересуюсь, можно это на уровне NAT разрулить?

Posted

Поэтому интересуюсь, можно это на уровне NAT разрулить?

На L4 это сделать нельзя. Нужно нечто, понимающее http headers, например, nginx как было предложено выше

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...