Современные облачные платформы — Vercel, Railway, AWS и другие — при подключении собственного домена обычно дают одну инструкцию: «Создайте для домена CNAME-запись на такой-то адрес». Для поддомена это не проблема: CNAME на имя www или app добавляется без вопросов. Но стоит попытаться добавить ту же запись на сам основной домен, то есть на misol-startap.uz, как DNS-панель выдаёт ошибку либо сохраняет запись, после чего перестаёт работать почта. Это не недостаток панели, а требование стандарта DNS. Ниже разберём причину и практические решения для каждой платформы.
Почему на основной домен нельзя поставить CNAME
Запись CNAME означает «это имя — псевдоним другого имени». По стандарту на имени с CNAME не может быть никаких других записей, потому что резолвер перенаправляет все вопросы об этом имени на целевое имя. А на основном домене обязательно находятся записи SOA и NS, а часто ещё MX и TXT. Поэтому CNAME на основном домене конфликтует с этими записями.
Одни панели такую запись отклоняют, другие принимают, но результат становится непредсказуемым: часть резолверов не находит MX, и почта начинает теряться. Поэтому записи такого вида нужно избегать.
; неправильно: CNAME на основном домене конфликтует с SOA, NS и MX
@ IN CNAME cname.platforma-misol.com.
@ IN MX 10 mail.misol-startap.uz.
; правильно: CNAME для поддомена
www IN CNAME cname.platforma-misol.com.
Решение 1: A-запись от платформы
Самый простой путь — когда платформа даёт IP-адрес для основного домена. Так делает Vercel: в разделе Domains настроек проекта для основного домена указана A-запись с IP-адресом, а для www рекомендуется CNAME. Берите значения не из статьи, а именно из панели своего проекта, потому что платформы время от времени обновляют рекомендуемые адреса. A-запись — обычная запись, поэтому она спокойно уживается с MX и TXT и работает в любой DNS-панели.
@ IN A <IP, указанный в панели Vercel>
www IN CNAME <имя, указанное в панели Vercel>.
@ IN MX 10 mail.misol-startap.uz.
Решение 2: CNAME flattening, ALIAS или ANAME
Railway и многие сервисы AWS (балансировщик нагрузки, CloudFront, Elastic Beanstalk) не дают постоянного IP-адреса, а выдают только имя хоста, потому что их IP меняются. В этом случае для основного домена нужен «CNAME flattening». При этом DNS-провайдер сам определяет текущие IP целевого имени и возвращает их как обычные A-записи. Снаружи на основном домене видны только A-записи, поэтому стандарт не нарушается, а почтовые записи сохраняются.
Разные провайдеры называют эту возможность по-разному: в Cloudflare flattening применяется автоматически, когда CNAME добавлен на основной домен, у некоторых других есть специальный тип записи ALIAS или ANAME. Собственный DNS-сервис AWS, Route 53, предлагает Alias-записи для ресурсов AWS. Помните, что это фирменная функция провайдера, а не стандартный тип DNS, поэтому она работает, только если NS-серверы вашего домена находятся у такого провайдера.
Решение 3: www как основной адрес, а домен перенаправляет
Если вы не хотите переносить DNS к другому провайдеру, самый надёжный и универсальный путь — сделать основным адресом сайта www. www подключается к платформе через CNAME, а основной домен обычной A-записью указывает на ваш хостинг-сервер, где все запросы перенаправляются на www редиректом 301. Единственное условие — на перенаправляющем сервере должен быть SSL-сертификат и для основного домена, иначе при открытии https://misol-startap.uz браузер покажет предупреждение.
# Nginx: редирект 301 с основного домена на www
server {
listen 443 ssl;
server_name misol-startap.uz;
ssl_certificate /etc/letsencrypt/live/misol-startap.uz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/misol-startap.uz/privkey.pem;
return 301 https://www.misol-startap.uz$request_uri;
}
# вариант для Apache .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^misol-startap\.uz$ [NC]
RewriteRule ^(.*)$ https://www.misol-startap.uz/$1 [R=301,L]
Кратко по платформам
| Платформа | Поддомен | Основной домен |
|---|---|---|
| Vercel | CNAME | A-запись из панели или flattening |
| Railway | CNAME | Flattening/ALIAS или www + редирект |
| AWS (ALB, CloudFront) | CNAME | Route 53 Alias, flattening или www + редирект |
Точные требования каждой платформы со временем могут меняться, поэтому воспринимайте таблицу как ориентир, а итоговые значения проверяйте в документации платформы.
Пример: фронтенд стартапа на Vercel, API на Railway
Небольшая команда стартапа из Ташкента разместила фронтенд на Vercel, а API — на Railway, при этом домен и корпоративная почта остались у узбекистанского провайдера. Разработчик сначала попытался добавить на основной домен CNAME от Railway, и панель выдала ошибку. Решение получилось таким: для основного домена добавили A-запись из панели Vercel, www подключили к Vercel через CNAME, а API вынесли на поддомен api.misol-startap.uz с CNAME от Railway. Записи MX и SPF на основном домене остались нетронутыми, и почта не прерывалась ни на минуту.
Проверка после подключения
После добавления записей проверьте, как они видны миру. Основной домен должен возвращать A-записи, www — CNAME, а MX должна остаться на месте. В панели платформы статус домена должен быть «Valid» или отмечен похожим зелёным значком, а SSL-сертификат должен выпуститься автоматически.
dig misol-startap.uz A +short
dig www.misol-startap.uz CNAME +short
dig misol-startap.uz MX +short
curl -sI https://misol-startap.uz | head -n 3
Если домен в sayt.uz, записи A, CNAME и MX добавляются в разделе DNS личного кабинета, а для редиректа с основного домена на www достаточно и обычного тарифа хостинга.