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

Перенаправить (все 80) на сервер Debian, а затем делегировать Debian где?

У меня есть маршрутизатор, который перенаправляет весь порт 80 на веб-сервер Debian, но я хочу добавить еще один сервер к этой группе. Как я могу заставить debian переадресовывать всех, кто пытается получить доступ к git.domain.com, на 192.168.0.21 или что-то еще (так что git.domain.com перейдет на стандартный IP-адрес, просто будет перенаправлен на другой локальный сервер, так что он будет иметь полное доменное имя)?

Вы можете использовать proxy_mod и vhosts для apache на сервере, который первым попадает в трафик.

Первый виртуальный хост будет обслуживать только локальный контент. Второй виртуальный хост будет прокси для контента, хранящегося на другом сервере. Ваш vhost будет похож на это:

ServerName git.domain.com
        DocumentRoot /var/www/
        ProxyRequests Off
          Order deny,allow
          Allow from all
        ProxyPass / http://192.168.0.21:80/
        ProxyPassReverse / http://192.168.0.21:80/

Один из простейших способов сделать это - запустить обратный прокси-сервер, например haproxy. Вы можете управлять этим на сервере Debian, а затем перенаправлять запросы туда, куда вы хотите.

Итак, краткий пример: ваш прокси-сервер прослушивает порт 80 и перенаправляет все для a.example.com на экземпляр apache, прослушивающий 127.0.0.1:8080, и все для b.example.com на экземпляр apache на другом компьютере (например, 192.168.0.21:80).

Документация на сайте haproxy проста для понимания, поэтому вы можете применить ее к своим обстоятельствам: http://haproxy.1wt.eu. Обратите внимание, что будет много информации, не имеющей отношения к вам, поскольку haproxy может намного больше, чем эта простая задача.

Переадресация портов работает с IP-адресами и портами, а не с именами хостов, короче говоря, вы не можете. Предполагая, что у вас есть несколько записей DNS, указывающих на один и тот же общедоступный IP-адрес, маршрутизатору придется каким-то образом проверять HTTP-запросы, чтобы решить, на какой внутренний веб-сервер их отправлять - что, как я подумал, выходит за рамки всего домашнего сетевого оборудования.

Единственный способ сделать это - иметь несколько общедоступных IP-адресов, каждый из которых будет перенаправляться на другой веб-сервер внутри, или перенаправить другой порт (скажем, 81) для другого веб-сервера.