LINUX.ORG.RU
ФорумAdmin

Как работает CNAME запись?

 


0

2

Здравствуйте!
Вроде простой вопрос, но не могу понять в чем дело.
Вот ДНС записи домена class-lesson.ru

@    IN MX 10 smx.class-lesson.ru.
@    IN A 185.185.68.109
mw   IN A 62.113.109.28
fast IN A 62.113.109.28
smx  IN A 62.113.109.28
lnk  IN CNAME mw.class-lesson.ru.
Вот ссылка из доставленного письма, которая должна перейти на рассыльщик почты mw.class-lesson.ru
http://lnk.class-lesson.ru/campaigns/fe2228xkos698/track-url/zc460dfpb3cf4/2d...
Однако этого не происходит.
Что здесь не так?
Если изменить ссылку вручную и сделать вот так
http://mw.class-lesson.ru/campaigns/fe2228xkos698/track-url/zc460dfpb3cf4/2d0...
то все работает правильно...

Заголовок Host будет разный, TLS SNI тоже (при использовании https).

deadNightTiger ★★★★★
()

CNAME это не редирект. Это просто означает что у lnk будет тот же ip-адрес что у mw. А www-сервер, который там стоит, скорее всего не рассчитан на то, что к нему будут подключаться как в lnk.

firkax ★★★★★
()

CNAME это перенаправление на уровне DNS, а не на уровне HTTP.

А вообще у меня обе твои ссылки работают.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от vbr

[зануда]

перенаправление, это откуда-то куда-то.

А CNAME это алиас или псевдоним, кому как больше нравится, никаких процессов перенаправлений тут нет

[/зануда]

Morin ★★★★★
()
Ответ на: комментарий от rafaello

CNAME работает, но он делает не то что ты от него ожидал.

mw   IN A 62.113.109.28
lnk  IN CNAME mw.class-lesson.ru.

это то же самое что

mw   IN A 62.113.109.28
lnk  IN A 62.113.109.28

нужно для того, чтобы не менять айпи-адрес в 10 местах когда он изменится, или для того, когда целевой домен - не твой, например

ya IN A yandex.ru.

сделает так, что ya.class-lesson.ru будет всегда с тем же айпи-адресом что и yandex.ru.

А если ты хочешь чтобы до ссылке lnk.class-lesson.ru делалось то же самое что по mw.class-lesson.ru, то есть два способа:

1) сделать 301 редирект, как ты уже писал

2) настроить веб-сервер чтобы тот считал домены lnk. и mw. одним и тем же (сейчас он не знает что такое lnk. и ничего там не показывает).

firkax ★★★★★
()
Ответ на: комментарий от Morin

А CNAME это алиас или псевдоним, кому как больше нравится, никаких процессов перенаправлений тут нет

На самом деле немного есть (dns-резолвер может в итоге сделать ещё одни запрос уже к другой зоне, если CNAME туда ведёт), но для браузера это всё не важно, да, получается именно псевдоним.

firkax ★★★★★
()
Ответ на: комментарий от firkax

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

Morin ★★★★★
()
Ответ на: комментарий от Morin

Причём тут ответственный за зону?

www.example.ru CNAME www.example.org
www.example.org A 0.1.2.3

Днс зоны example.ru тебе на запрос www.example.ru ответит «у меня нет его айпи-адреса, ищи айпи-адрес www.example.org». Что это как не перенаправление?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Во втором пункте наиболее приемлемый вариант

В данном случае работает сервер NGINX.
И согласно записям ДНС у адреса 62.113.109.28 есть поддомена, fast, smx и mw.
Четвертым в эту кампанию влезает поддомен lnk.
Вот вопрос.
Каким образом NGINX делает сортировку в первоочередности?
В данном случает он открывает поддомен fast.class-lesson.ru.
Также, я понимаю, что у всех трех поддоменов в конфиге NGINX явно прописаны опции hostname. Естественно, опции hostname нет у поддомена lnk.
Вопрос тот же.
Можно как то заставить NGINX определить, что если запрос идет с поддомена lnk, то он должен подставить поддомен mw (как то муторно объяснил, но вроде как можно понять).
Хотелось бы оставить 301 редирект для поддомена lnk - как уже самый крайний вариант, если ничего не получится с CNAME.

rafaello
() автор топика
Ответ на: комментарий от rafaello

Вместо

server_name mw.class-lesson.ru;
напиши
server_name mw.class-lesson.ru lnk.class-lesson.ru;

А если домен неизвестный (как сейчас) то открывается первый (в порядке как они в конфиге указаны) сайт с подходящим айпи, либо (если есть такой) тот у кого в директиве listen указана опция default. Видимо у тебя это fast и он открывается на все неизвестные nginx-у домены.

Только учти: nginx теперь будет знать что lnk=mw, но скрипты которые там дальше вызываются этого знать не будут. Возможно, им тоже надо будет что-то прописать, а может они не проверяют какой домен вообще (ну увидишь когда в nginx-е пропишешь).

Хотелось бы оставить 301 редирект для поддомена lnk - как уже самый крайний вариант, если ничего не получится с CNAME.

И опять повторю, CNAME тут соверенно ни при чём. Он нужен только для того, чтобы браузер узнал к какому айпи-адресу подключаться. Запись A сделала бы ровно то же самое.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Ура!!!!! Получилось!!!
Оказывается, дело было в переадресации с http:// на https:// для сервера mw.class-lesson.ru.
Там было прописано так

return 301 https://$host$request_uri;
я исправил на вот так
server {
     server_name mw.class-lesson.ru lnk.class-lesson.ru;

    listen 62.113.109.28:80;
   # return 301 https://$host$request_uri;
    return 301 https://mw.class-lesson.ru$request_uri;
}
и все заработало.
Спасибо всем!!!!

rafaello
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.