Назад | Перейти на главную страницу

Перенаправить определенный домен через порт 80 на другой сервер в интрасети

У меня интересная проблема, и я подумал, что посмотрю, что, по вашему мнению, будет лучшим решением, прежде чем слепо пробовать случайные вещи.

По сути, у меня дома работают два сервера (один для Linux и один для Windows) за стандартным маршрутизатором Linksys. Прямо сейчас порт 80 перенаправляется на мою Linux-машину, потому что на нем размещается ряд веб-сайтов. Но с добавлением моего Windows-сервера мне нужно, чтобы он мог также использовать порт 80. Очевидно, что у меня не может быть маршрутизатора, перенаправляющего 80 на оба, поэтому мне было интересно, есть ли способ, чтобы сервер Linux автоматически (и прозрачно) туннелировал / пересылал / любые запросы с данный домен к машине Windows. Поэтому, когда запрос из домена blah.example.com попадает на сервер Linux, я хочу, чтобы он отправлял его непосредственно на сервер Windows для обработки, и если это какой-либо другой домен, сервер Linux должен обрабатывать его сам, а не пересылать. В идеале я бы хотел, чтобы это было сделано таким образом, чтобы Windows Server не нужно было специально настраивать: он не должен различать запросы, перенаправленные другим сервером, или запросы, перенаправленные непосредственно маршрутизатором. .

Я понимаю, что это может потребовать изменения IP-таблиц или чего-то подобного, и если да, пожалуйста, не торопитесь, потому что я никогда раньше не вводил их в заблуждение. Кроме того, у меня сейчас нет физического доступа, только SSH, поэтому, пожалуйста, предупредите меня, если что-либо, что вы предлагаете, может нарушить / отключить соединение SSH (что, очевидно, было бы очень плохо). Любая помощь приветствуется, заранее спасибо! :)

Если вы еще не используете Apache на своем компьютере с Linux, я не рекомендую вам использовать его только для этого, это чрезмерно и намного тяжелее для ресурсов компьютера.

Я рекомендую вам использовать nginx: он легкий, стабильный и используется на крупных сайтах, таких как wordpress.com (видеть Вот). Из nginx о странице:

nginx [engine x] - HTTP и обратный прокси-сервер

Вы захотите использовать nginx в качестве обратного прокси - вот как это сделать на Ubuntu. Также рекомендую посмотреть Примеры прокси-серверов вики nginx.


Отредактируйте в соответствии с вашими комментариями:

Чтобы реальный IP-адрес был перенаправлен на хост Windows, установите этот заголовок:

proxy_set_header  X-Real-IP  $remote_addr;

Надеюсь, это поможет.

Ознакомьтесь с Apache mod_proxy ( http://httpd.apache.org/docs/2.0/mod/mod_proxy.html ). По сути, вы настраиваете VHOST для forwardthistowindows.example.com и указываете mod_proxy передавать все эти запросы на windows.example.com.

Проверьте документацию, но вам, вероятно, понадобится что-то вроде


ProxyPass / http://windows.example.com

Что вы, вероятно, захотите сделать, так это обратный прокси. Предполагая, что другие веб-сайты на сервере Linux работают под Apache. Затем используя mod_proxy ваша конфигурация будет примерно такой:

<VirtualHost *:80>
    ServerName externalwin.example.com
    ProxyPass / http://internal.example.com/
    ProxyPassReverse / http://internal.example.com/ 
</VirtualHost>

Есть много других способов настроить обратный прокси-сервер как с Apache, так и с другим программным обеспечением веб-сервера или прокси-сервера.

Единственное, что вам нужно настроить на сервере Windows, - это убедиться, что все выходные URL-адреса используют внешний адрес.