как перенаправить два URL на одном и том же порту на два внутренних IP-адреса - PullRequest
2 голосов
/ 30 ноября 2011

Эти две машины A и B имеют NAT за 1 IP-адресом.

Url.xyz.com отправляется на компьютер A через порт 80, обслуживаемый Apache 2.2 и url2.xyz.com должен перейти на компьютер B через порт 80, обслуживаемый Apache 2.2 на этом компьютере

У меня есть машина A, принимающая все входящие пакеты из порта 80 с моего шлюза ... fyi

В какой-то момент у меня был Apache на машине, чтобы сделать это, но теперь я изо всех сил вернуть хороший конфиг. Я использую diff OS на diff Machine B по уважительным причинам ....

Я вспоминаю настройку виртуального сервера url2.xyz.com в apache 2.2 на машине A, используя порт 80, затем задайте для файла хоста на машинах A и B строку с названием:

192.168.0.x url2.xyz.com url2

и установка корня документа для url2.xyz.com в apache на машине A, равного корню документа на машине B. (пустое поле не займет ....)

Я либо сплю, либо пропускаю небольшой шаг настройки. Любая помощь приветствуется. Насколько я помню, примерно полгода назад казалось, что apache на компьютере A прочитал файл хоста и сделал это правильно ..

Чистым хорошим результатом является (надеюсь), что виртуальный сервер на машине A получает контент с машины B (или C, или D и т. Д.)

в качестве альтернативы я попытаюсь получить другой IP-адрес от моего провайдера.

1 Ответ

3 голосов
/ 30 ноября 2011

Одна возможность состоит в том, чтобы машина A действовала в качестве прокси-сервера для машины B. Это означает, что все запросы для обоих доменов направляются на машину A через порт 80, но затем вы настраиваете виртуальные хосты на основе имен в apache.Затем виртуальный хост для url2.xyz.com пересылает запрос на компьютер B.

Примерно так:

Виртуальные хосты на компьютере A:

<VirtualHost *:80>
ServerName url1.xyz.com
DocumentRoot /var/www/url1
</VirtualHost>

<VirtualHost *:80>
ServerName url2.xyz.com
ProxyPass / http://url2.machineB/
ProxyPassReverse / http://url2.machineB/
</VirtualHost>

Изатем на компьютере A вы определяете url2.machineB, чтобы он указывал на IP-адрес компьютера B. Это делается путем добавления строки в файл / etc / hosts.Затем на компьютере B вы создаете виртуальный хост Apache для прослушивания этого домена, например так:

<ViirtualHost *:80>
ServerName url2.machineB
DocumentRoot /var/www/url2
</VirtualHost>

Это может быть не совсем решением, но должно дать вам один вариант.См. http://httpd.apache.org/docs/2.2/mod/mod_proxy.html для получения дополнительной информации о проксировании.

...