У меня такой же вопрос с Как указать поддомен на локальный сервер с динамическим 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
[Решено]
Решение
Запись A указывает на общедоступный IP-адрес:
1 @ public.ip
2 www public.ip
Запись CNAME указывает на субдомен:
1 sub1 mydomain.com
2 sub2 mydomain.com
Добавить 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-адресов для каждого домена, потому что, ну, у вас только один. Вы также не можете просто указать Apache использовать HTTP-заголовок host для маршрутизации в нужный поддомен, потому что у вас больше, чем при настройке apache, и все на разных внутренних IP-адресах.
В таком случае я бы использовал Squid в режиме обратного прокси: установите его на «простую» машину и перенаправляйте запросы на каждый веб-сервер, локальный или удаленный.
Его довольно легко настроить: ознакомьтесь с этой страницей стандартной документации по squid, поскольку она точно описывает то, что вы хотите сделать: http://wiki.squid-cache.org/ConfigExamples/Reverse/MultipleWebservers
Обратите внимание, что использование обратного прокси-сервера может вызвать некоторые проблемы с совместимостью приложений и что настройка SSL в таком сценарии является деликатной задачей (но это можно сделать).