Перейти к содержимому
Калькуляторы

NAT для HTTP

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А заземлять обязательно или не важно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачэм? Гланды через попу тоже можно вывернуть...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

уже написали nginx или haproxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Можно, но лучше отдать это софтине.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.