У меня 2 машины и роутер с DD-WRT. Мои машины,
В настоящее время у меня есть все запросы на мой внешний IP-адрес через порт 80, которые пересылаются на мой компьютер с Windows 2008. Недавно я добавил дополнительный сервер Ubuntu, и я хотел бы направить его на IP-адрес на основе хоста. В настоящее время существует только отношение 1 к 1 между портом и сервером, при этом все запросы на порт 80 поступают на компьютер с Windows 2008. В качестве примера я бы хотел сделать следующее:
Если бы у меня был запрос на мой роутер для example-a.com
, Я бы отправил его 192.168.1.2
.
Если бы у меня был запрос на example-b.com', I would forward it to
192.168.1.3`
Это что-то, что нужно сначала маршрутизировать через мою машину 2008 года, или я могу сделать это с маршрутизатора?
для этой функциональности вам потребуется обратный прокси, если вы используете apache на своем сервере ubuntu или nginx, этого достаточно легко добиться с минимальной дополнительной работой.
вкратце, что вы должны сделать, это настроить переадресацию порта маршрутизатора на ваш сервер ubuntu, а затем настроить веб-сервер для прослушивания как example-a.com, так и example-b.com
предполагая, что example-a.com находится на сервере Windows, вы должны затем настроить example-a.com на сервере ubuntu для обратного прокси-сервера на ваш сервер Windows
для apache это выглядит примерно так:
1 - убедитесь, что следующие строки находятся в вашем файле apache2.conf и не прокомментированы:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2- создайте виртуальный хост для example-a.com: и добавьте к нему следующее:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http:/internalexample-a.com
ProxyPassReverse / http://internalexample-a.com
3- перезапустите apache на вашем сервере ubuntu
это позволит вам прокси на сервер Windows заменить internalexaple-a.com либо IP-адресом, на который example-a.com отвечает на сервере win, либо внутренним именем DNS, которое указывает на тот же сайт на сервере Windows
Я не верю, что маршрутизатор когда-либо увидит имя хоста. DNS разрешается клиентом перед отправкой запроса. Таким образом, IP-адрес назначения будет установлен в маршруте запроса и маршрутизатора на основе IP-адреса назначения.
Причина, по которой это работает для веб-серверов, заключается в том, что протокол HTTP включает имя хоста в HTTP-запросе (называемом заголовком хоста), но оно находится глубоко в пакете, а не то, что видит маршрутизатор.
Это может помочь нам узнать, с каким приложением / протоколом вам нужно это сделать. HTTP? SSH?
FWIW, я делаю это с помощью SSH, указывая два разных порта. Запросы для одного сервера идут на порт 22, а другого на порт 29. YMMV