Переадресация корневого домена на поддомен www с использованием DNS-записей.

16

Я www.mydomain.comуказал на сайт Azure.

www.mydomain.com --- CNAME --- mydomain.azurewebsites.net

Когда я захожу www.mydomain.com, все отлично работает. Это хорошо.

Проблема в том, mydomain.comчто не работает. Azure разрешает только поддомен www.

На некоторых серверах имен я использую запись FWD для пересылки корня на www, и это прекрасно работает. Мой текущий сервер имен (zoneedit.com) не имеет этой записи FWD.

Есть ли запись DNS, которую мы можем использовать для перенаправления корневого домена на поддомен www?

Шон Луттин
источник
2
ZoneEdit имеет «WebForward», который сделает это.
Майкл Хэмптон
@MichaelHampton Perfect. Мы использовали@ | StealthForward | http://www.example.com
Шон Луттин
Замечательно. По сути, он делает то, что я описал (указывает на реальный IP, то есть веб-сервер, который просто перенаправляет с HTTP 300-серии на www.domain.com).
DTK

Ответы:

17

К сожалению, это общеизвестный недостаток протокола DNS. В стандартах DNS не определен тип записи, который позволил бы вам использовать псевдоним вершины домена. Многие люди предполагают, что CNAMEзаписи могут быть использованы для достижения этой цели, но есть технические причины, почему они не могут .

Многие провайдеры DNS реализуют пользовательские (читай: фальшивые) типы записей DNS, чтобы попытаться устранить этот недостаток. За кулисами эти поддельные записи реализуют пользовательское поведение в программном обеспечении этой компании, используя комбинацию синтезированных Aзаписей и перенаправления веб-сервера для достижения желаемой цели. FWDявляется одним из них, очень похоже на WebForwardто, что Майкл направил вас в комментариях.

Андрей Б
источник
8

Резюме: Короче говоря, у вас не может быть нужной записи, и ваш DNS-хост делает все правильно.

Объяснение: Стандарты DNS нарушают наличие CNAME (запись псевдонима / запись пересылки) в вершине зоны (пустое имя в начале зоны).

Причиной этого является то, что запись CNAME не может иметь конфликт части имени с какой-либо записью, кроме записи DNSSec. В типичной зоне запись CNAME на вершине зоны будет конфликтовать, по крайней мере, с записями SOA и NS (и, вероятно, с несколькими другими). Хотя некоторые DNS-серверы допускают это, это плохая вещь, которая может затруднить диагностику сбоев (не говоря уже о том, что не будет работать, если вы переместите хостинг зоны на DNS-сервер, соответствующий стандартам, например, на основе BIND) ,

Либо есть записи A на вершине зоны (это может быть простой веб-сервер, который просто генерирует HTTP 302 на www). Если вы можете получить статические IP-номера для ваших экземпляров сервера Azure, поместите запись A для каждого на вершине своей зоны и создайте одну запись CNAME с именем "www", которая указывает на запись apex.

В качестве примера :

 

$ ORIGIN example.com.

@ IN SOA ns1.example.com. admin@example.com. (
                                 101;
                                 172800;
                                 900;
                                 1209600;
                                 3600; )
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A 123.234.1.123
@ IN A 123.234.1.124
@ IN A 123.234.1.125
ns1 IN A 123.234.1.126
ns2 IN A 123.234.1.127
www IN CNAME example.com.
ДТК
источник
5
ИМО: Не стоит бесконечно повторять, почему вершины CNAME не работают. Если пользователь спрашивает, почему они не работают, у нас есть канонический ответ на этот вопрос со ссылками RFC. (полное раскрытие: я написал это) Если они не спрашивают об этом, лучше придерживаться ответа на вопрос, как сформулировано.
Андрей B
Спасибо. Я должен был искать канонический ответ. Я буду иметь в виду, что в следующий раз.
DTK
2

Некоторые протоколы имеют стандарты для типов записей DNS, отличных от записей A, для поиска службы. SMTP с соответствующими записями MX является хорошим примером этого. Для HTTP нет определенных типов записей DNS. Вероятно, ваш предыдущий провайдер DNS / регистратора имел службу HTTP перенаправления или обратного прокси.

Для достижения вашей цели вам необходимо настроить веб-сервер (виртуальный хост) для перенаправления HTTP 301 или 302 с одного имени хоста на другое, настроить обратный прокси-сервер HTTP, настроить независимые виртуальные хосты или использовать псевдонимы виртуальных хостов, чтобы один и тот же экземпляр веб-сервера будет отвечать обоим именам.

Джошуа Хоблитт
источник
0

Если вы хотите получить ответ, специфичный для Azure, вам нужно создать еще одну запись CNAME, указывающую на awverify.mydomain.azurewebsites.net, например так

www.mydomain.com --- CNAME --- awverify.mydomain.azurewebsites.net
Абхишек Сиддху
источник