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

Как указать поддомены на разные локальные IP-адреса

У меня такой же вопрос с Как указать поддомен на локальный сервер с динамическим IP. Разница в том, что у меня есть статический IP-адрес от моего интернет-провайдера, я думаю, мне не нужно использовать DynDNS, верно? так что я могу использовать вместо этого?

Моя цель - указать каждый поддомен на другой веб-сервер следующим образом:
mydomain.com -> 192.168.1.100 (основной веб-сервер)
sub1.mydomain.com -> 192.168.1.101 (веб-сервер 1)
sub2.mydomain.com -> 192.168.1.102 (веб-сервер 2)

Я пробовал использовать прокси-модуль Apache, следуя инструкции Вот но не получилось. Когда я обращаюсь к sub1.mydomain.com через браузер, он всегда ведет на mydomain.com.
Могу ли я сделать это с помощью такого подхода? если нет, пожалуйста, покажите мне другой путь.

Я использую Ubuntu Server 12.04

[Решено]
Решение

  1. Настроить DNS

Запись A указывает на общедоступный IP-адрес:
1 @ public.ip
2 www public.ip

Запись CNAME указывает на субдомен:
1 sub1 mydomain.com
2 sub2 mydomain.com

  1. Установите Apache.

Добавить sub1 и sub2 к /etc/apache2/sites-available

sub1:

<VirtualHost *:80>    
        ServerName sub1.mydomain.com    
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>    
        <Location />
                ProxyPass http://192.168.1.101/
                ProxyPassReverse http://192.168.1.101/
        </Location>    
</VirtualHost>

sub2:

<VirtualHost *:80>    
        ServerName sub2.mydomain.com    
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>    
        <Location />
                ProxyPass http://192.168.1.102/
                ProxyPassReverse http://192.168.1.102/
        </Location>    
</VirtualHost>

На самом деле это не проблема веб-сервера, ее следует решить в вашем DNS. Вы контролируете DNS для mydomain.com, право? Так что добавьте A записи для поддоменов, указывающих на соответствующие IP-адреса, убедитесь, что эти адреса обслуживаются веб-серверами, которые знают, что они должны обслуживать эти домены, и все будет работать.

Все запросы субдоменов проходят через основной веб-сервер для mydomain.comкак какой-то странный балансировщик нагрузки, неэффективен и ненужен.

редактировать: извините, я не оценил, что вы использовали адреса 192.168.0.0/16 для обозначения того, что ваши серверы поддоменов находятся во внутренней сети; Я думал, что вы просто редактируете адреса, как вы редактировали доменные имена.

Итак: все ли веб-серверы во внутренней сети? Или только поддоменные? В последнем случае, какое VPN-соединение существует в настоящее время между основным веб-сервером и внутренними серверами?

Я совсем недавно это сделал. Видеть мой вопрос. Это было довольно долгое время, но в конце концов я все же настроил.

  • Настройте DNS. Запись A будет указывать на ваш общедоступный IP-адрес. Итак, yourdomain.com указывает на your.pub.ip.add. Добавьте записи CNAME для поддоменов. Итак, sub1.yourdomain.com указывает на @, а sub2.yourdomain.com указывает на @и т. д. Хотя все субдомены указывают на один и тот же адрес, браузер сообщит веб-серверу, какой субдомен вы пытаетесь достичь.

  • Установите Apache. Вы захотите настроить виртуальные хосты для каждого поддомена (а также, возможно, для основного домена). Вы можете определить виртуальные хосты в разных местах ... мой определяется в /etc/apache2/sites-available, и включает <Location> директива, в которой вы настроите обратный прокси.

Если я правильно вас понял, вот ваша ситуация:

  • У вас один внешний IP-адрес
  • У вас есть несколько внутренних веб-серверов (например, разные физические машины или виртуальные машины, а не только разные веб-корни на одном веб-сервере)

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

В таком случае я бы использовал Squid в режиме обратного прокси: установите его на «простую» машину и перенаправляйте запросы на каждый веб-сервер, локальный или удаленный.

Его довольно легко настроить: ознакомьтесь с этой страницей стандартной документации по squid, поскольку она точно описывает то, что вы хотите сделать: http://wiki.squid-cache.org/ConfigExamples/Reverse/MultipleWebservers

Обратите внимание, что использование обратного прокси-сервера может вызвать некоторые проблемы с совместимостью приложений и что настройка SSL в таком сценарии является деликатной задачей (но это можно сделать).