Пересилайте кореневий домен на піддомен 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 Ідеально. Ми використовували@ | StealthForward | http://www.example.com
Shaun Luttin

Це чудово. Це по суті робить те, що я описав (вказує на реальний 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", який вказує на запис вершини.

Як приклад :

 

$ ORIGIN example.com.

@ У SOA ns1.example.com. admin@example.com. (
                                 101;
                                 172800;
                                 900;
                                 1209600;
                                 3600; )
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ В А 123.234.1.123
@ В А 123.234.1.124
@ В А 123.234.1.125
ns1 В А 123.234.1.126
ns2 В А 123.234.1.127
www IN CNAME example.com.

5
IMO: Не варто нескінченно повторювати, чому вершини CNAME не працюють. Якщо користувач запитує, чому вони не працюють, у нас є канонічна відповідь на це з посиланнями RFC. (повне розкриття: я написав це) Якщо вони про це не запитують, то краще дотримуватися відповіді на питання як фразово.
Андрій Б

Дякую. Я повинен був шукати канонічну відповідь. Маю на увазі, що наступного разу.
DTK

2

Деякі протоколи мають стандарти для записів DNS, крім записів A, для пошуку служби. SMTP з пов’язаними записами MX є хорошим прикладом цього. Немає визначених типів записів DNS для HTTP. Можливо, у вашого попереднього постачальника послуг DNS / реєстратора була або перенаправлення HTTP, або служба зворотного проксі-сервера.

Для досягнення своєї мети вам потрібно налаштувати веб-сервер (віртуальний хост), щоб перенаправити HTTP 301 або 302 з одного імені хоста на інше, встановити зворотний проксі HTTP, налаштувати незалежні віртуальні хости або використовувати псевдоніми віртуального хоста так той самий екземпляр веб-сервера відповість на обидва імена A.


0

Якщо ви хочете відповісти, специфічну для Azure, вам потрібно створити інший запис CNAME, що вказує на зразок awverify.mydomain.azurewebsites.net.

www.mydomain.com --- CNAME --- awverify.mydomain.azurewebsites.net
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.