Как привязать домен к VPS: настройка DNS шаг за шагом
Сервер арендован, сайт на нём лежит, но открывается только по цифрам. Осталось привязать домен - и это ровно два действия: вписать адрес сервера в DNS и объяснить веб-серверу, что он теперь обслуживает это имя. Всё остальное детали, которые обычно и путают.
Разберём по шагам: где взять IP, какую запись создать у регистратора, что делать с www и почтой, сколько ждать обновления и как проверить результат, если сайт по домену так и не открылся.
Как домен находит сервер
Домен сам по себе никуда не ведёт. Это имя в глобальном справочнике DNS, а рядом с именем в этом справочнике лежит IP-адрес сервера. Когда посетитель вводит адрес сайта, браузер сначала спрашивает у DNS, какой IP стоит за этим именем, получает цифры и идёт уже по ним.
Дальше запрос приходит на сервер, и уже веб-сервер решает, какой из сайтов отдать: на одном адресе их может жить много. Поэтому недостаточно настроить только DNS - имя домена должно быть прописано и в конфигурации сервера.
Что нужно перед началом
- Сервер с белым IP-адресом. У VPS он есть сразу после активации, подробнее в статье про IP-адрес VPS.
- Зарегистрированный домен и доступ в личный кабинет регистратора, где он куплен.
- Веб-сервер на машине, который отдаёт сайт: Nginx или связка, поднятая через панель управления.
Если сайта на сервере ещё нет, домен всё равно можно привязать: по нему откроется стандартная страница веб-сервера. Это нормальный способ убедиться, что DNS настроен верно, ещё до заливки сайта.
Шаг 1. Узнать IP сервера
Адрес указан в панели управления рядом с сервером. Он же виден на самой машине:
hostname -IЕсли адресов несколько и непонятно, какой из них публичный, проще спросить у внешнего сервиса - он ответит тем адресом, с которого сервер вышел в интернет:
curl ifconfig.meЭтот адрес и понадобится на следующем шаге.
Шаг 2. Создать A-запись у регистратора
A-запись связывает имя домена с адресом IPv4. Заходите в личный кабинет регистратора, открываете управление DNS для домена и добавляете две записи:
| Тип | Имя (хост) | Значение | TTL |
|---|---|---|---|
| A | @ | 203.0.113.10 | 3600 |
| A | www | 203.0.113.10 | 3600 |
Символ @ означает сам домен, вторая строка - его вариант с www. В поле значения ставите IP своего сервера. TTL это время в секундах, на которое ответ запоминается в кешах по пути: час подходит для обычной работы.
Если у домена уже есть A-записи, оставшиеся от старого хостинга, их не дублируют, а меняют значение на новый адрес. Две записи с разными IP будут раскидывать посетителей между серверами случайным образом, и выглядеть это будет как плавающий сбой.
Шаг 3. Разобраться с остальными записями
Кроме A в зоне домена обычно есть ещё несколько типов записей, и знать про них полезно, чтобы случайно не сломать работающее.
- CNAME - псевдоним. Вместо второй A-записи www часто делают CNAME на основной домен: тогда при смене адреса достаточно поправить одну запись.
- AAAA - то же, что A, но для IPv6. Добавляют, если провайдер выдал адрес нового формата.
- MX - куда доставлять почту домена. Указывает на почтовый сервер, и это может быть совсем другая машина.
- TXT - служебные записи: SPF и DKIM для почты, подтверждение прав в панелях вебмастеров.
Здесь прячется самая частая неприятность при переезде: смена A-записи не переносит почту. Пока MX указывают на старого провайдера, письма продолжают ходить туда, даже если сайт уже работает на новом сервере. Если почту тоже поднимаете у себя, порядок настройки разобран в статье про почтовый сервер на VPS.
Шаг 4. Прописать домен на сервере
DNS довёл посетителя до машины, но сервер должен понять, какой сайт ему отдавать. В Nginx за это отвечает директива server_name:
server {
listen 80;
server_name site.ru www.site.ru;
root /var/www/site.ru;
index index.html;
}Проверить конфигурацию и применить её без разрыва соединений:
nginx -t && systemctl reload nginxЕсли сервер работает под панелью управления, то же самое делается через форму создания сайта: домен указывается там, а конфигурацию панель пишет сама. Так это устроено, например, в ISPmanager.
Сразу после того как домен заработал, выпускают сертификат и переводят сайт на HTTPS. Раньше это сделать не получится: проверка идёт по имени домена, и до привязки подтверждать нечего. Порядок описан в статье про SSL-сертификат на VPS.
Сколько ждать и как проверить
Изменения расходятся по интернету не мгновенно. Обычно новые записи видны через 10-30 минут, иногда дольше - до нескольких часов, если старая запись успела разойтись по кешам с большим TTL.
Посмотреть, какой адрес отдаёт DNS прямо сейчас:
dig +short site.ruЕсли утилиты dig в системе нет, подойдёт:
nslookup site.ruВ ответе должен быть IP вашего сервера. Старый адрес означает одно из двух: запись ещё не обновилась или правки внесли не в ту зону.
Проверить сам сервер, минуя DNS, можно обращением по адресу:
curl -I http://203.0.113.10Если по IP сервер отвечает, а по домену нет - дело в DNS, ждите обновления или ищите ошибку в записи. Если не отвечает и по IP - дело в машине: смотрите веб-сервер и правила файрвола, порт 80 должен быть открыт.
Отдельный приём для переезда работающего сайта: за сутки до смены адреса снизьте TTL до 300 секунд и дайте старому значению разойтись. Тогда само переключение займёт минуты, а не часы. Как готовят остальную часть переезда, разобрано в статье про перенос сервера к другому провайдеру.
Где хранятся записи: регистратор или провайдер
Зоной домена можно управлять в двух местах, и это решается NS-записями.
У регистратора. Записи правятся там же, где куплен домен. Ничего дополнительно настраивать не нужно, вариант подходит большинству.
На серверах имён хостинг-провайдера. У домена меняют NS, и дальше зона живёт в панели провайдера. Удобно, когда сайтов много и всё хочется держать в одном интерфейсе.
Работают только те записи, которые лежат там, куда указывают NS домена. Отсюда классическая ситуация: человек правит A-запись в кабинете регистратора, хотя NS давно переключены на провайдера, и правки ни на что не влияют. Прежде чем что-то менять, проверьте, куда указывают NS:
dig +short NS site.ruЧастые ошибки
Правят записи не там, где они действуют. Если NS переключены на провайдера, панель регистратора уже ни на что не влияет. Сначала смотрят NS, потом правят зону.
Оставляют старую A-запись рядом с новой. Посетители попадают то на новый сервер, то на старый. Со стороны это выглядит как случайные сбои, которые невозможно повторить.
Ждут результата мгновенно. DNS расходится минутами, изредка часами. Менять записи по кругу от нетерпения только хуже: каждая правка снова уходит в кеши.
Забывают про MX при переезде. Сайт переехал, почта осталась у старого провайдера. Проверять MX нужно отдельно от A.
Прописывают домен в DNS, но не в конфиге веб-сервера. Запрос доходит до машины, и она отдаёт первый попавшийся сайт или страницу-заглушку.
Выпускают сертификат раньше времени. Пока домен не указывает на сервер, проверка не пройдёт. Сначала DNS, потом HTTPS.
Частые вопросы
Как привязать домен к VPS? Создать у регистратора A-запись, где имя это домен, а значение это IP сервера, и прописать домен в конфигурации веб-сервера. После обновления DNS сайт откроется по имени.
Где взять IP-адрес сервера? В панели управления рядом с сервером или на самой машине командой hostname -I. Внешний адрес показывает curl ifconfig.me.
Сколько времени занимает привязка? Сама настройка около 15 минут. Обновление DNS обычно занимает 10-30 минут, в редких случаях несколько часов - это зависит от TTL старой записи.
Нужно ли менять NS-серверы домена? Не обязательно. Если вас устраивает панель регистратора, достаточно поправить там A-запись. NS меняют, когда хотят управлять зоной в панели хостинг-провайдера.
Можно ли привязать несколько доменов к одному серверу? Да, и это обычная практика. Все A-записи ведут на один IP, а веб-сервер разводит сайты по server_name. Отдельный адрес на каждый домен не нужен.
Почему сайт не открывается, хотя запись создана? Три частые причины: запись ещё не разошлась, правки внесены не в ту зону, домен не прописан в конфиге веб-сервера. Проверьте по очереди dig +short site.ru, NS домена и настройки сайта на сервере.
Что будет с почтой после привязки домена? Ничего, если не трогать MX. Почта ходит туда, куда указывают MX-записи, и от смены A-записи не зависит.
Нужен сервер под ваш домен? VPS на NVMe с выделенным IP-адресом - адрес известен сразу после активации, домен привязывается за 15 минут. Активация за 3 минуты. Первые 7 дней - тестовый период с возвратом средств.