У меня интересная проблема, и я подумал, что посмотрю, что, по вашему мнению, будет лучшим решением, прежде чем слепо пробовать случайные вещи.
По сути, у меня дома работают два сервера (один для 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-адреса используют внешний адрес.