Сайт открывается по IP, но не по домену
Вы вводите IP-адрес сервера — сайт открывается, вводите домен — ошибка, заглушка или чужая страница. Ситуация «сайт открывается по IP, но не по домену» почти всегда означает, что до сервера домен не доходит (проблема DNS) или доходит, но веб-сервер не понимает, какой сайт отдать (проблема конфигурации). Ниже пошаговое решение проблемы — как за пару минут определить, на чьей стороне сбой, и настроить домен так, чтобы он открывал ваш сайт.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Первый шаг: разделяем DNS и веб-сервер
Раз по IP работает, сам веб-сервер жив и сайт отдаётся — значит, проблема либо в том, что домен не указывает на этот IP (DNS), либо в том, что веб-сервер не сопоставляет домен с сайтом (виртуальные хосты). Разделить два случая помогает одна проверка: куда резолвится домен. Сравните IP из DNS с IP вашего сервера:
# куда указывает домен
dig +short example.com A
# IP вашего сервера
curl -s ifconfig.me; echo
Если dig вернул не ваш IP (или ничего) — проблема в DNS, домен не доведён до сервера, читайте следующую секцию. Если dig вернул ровно ваш IP, но по домену сайт всё равно не тот или ошибка — DNS в порядке, домен доходит, и дело в конфигурации веб-сервера, к которой мы перейдём ниже. Эта развилка экономит массу времени: половина людей чинит конфиг, когда сломан DNS, и наоборот.
Если домен не указывает на ваш IP
Когда dig не показывает ваш IP, домен просто не направлен на сервер. Причин несколько. A-запись не создана или указывает на старый адрес — самое частое. Запись создана, но ещё не разошлась: DNS обновляется не мгновенно, свежая запись может идти до нескольких часов. Домен делегирован на одни NS-серверы, а запись вы правите на других — тогда изменения не действуют.
# проверить и www, и голый домен
dig +short example.com A
dig +short www.example.com A
# на каких NS живёт зона
dig +short example.com NS
Убедитесь, что A-запись для домена (и отдельно для www, если он нужен) указывает на ваш IP, и что вы правите зону там, где домен реально делегирован — команда dig NS покажет авторитетные серверы. Если запись только что создана, дайте ей время разойтись и проверьте через публичный резолвер: dig @8.8.8.8 example.com. Пока DNS не отдаёт ваш IP, никакие настройки веб-сервера домен не откроют — сначала нужно довести домен до сервера.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Заказать VPS для сайтаЕсли DNS верный: смотрим server_name
dig показывает ваш IP, а домен всё равно не открывает нужный сайт — значит, веб-сервер получает запрос, но не знает, какой сайт с этим доменом связать. В Nginx за это отвечает директива server_name: она сопоставляет домен из запроса с нужным блоком server. Если домена нет ни в одном server_name, Nginx отдаёт сайт по умолчанию — часто это чужой сайт, заглушка или ошибка. Проверьте:
# какие домены прописаны в server_name
nginx -T | grep -E 'server_name|listen'
# после правки — проверка и применение
nginx -t && systemctl reload nginx
Убедитесь, что в конфиге нужного сайта server_name содержит и example.com, и www.example.com, если оба используются. По IP сайт открывается именно потому, что при запросе по IP домен не передаётся, и срабатывает дефолтный сервер — а вот при запросе по домену Nginx ищет точное совпадение в server_name и, не найдя, отдаёт не то. Чтобы понять механику окончательно, полезно представить, что браузер при обращении по домену кладёт имя хоста в заголовок запроса, и веб-сервер принимает решение именно по нему; при обращении по IP этого имени нет, сопоставлять не с чем, и в дело идёт сайт по умолчанию. Отсюда и асимметрия поведения, которая поначалу выглядит нелогичной: один и тот же сервер отдаёт разное в зависимости от того, как к нему обратились. Добавьте домен в server_name, проверьте nginx -t и перезагрузите. Для Apache аналогично отвечает ServerName/ServerAlias в виртуальном хосте.
Конфликт виртуальных хостов и сайт по умолчанию
Отдельный случай — домен прописан, но открывается всё равно чужой сайт. Так бывает при конфликте виртуальных хостов: несколько блоков server слушают один порт, и если запрошенный домен не совпал ни с одним server_name точно, либо совпал сразу с несколькими, Nginx выбирает первый подходящий или помеченный default_server. В результате ваш домен утыкается в чужую конфигурацию.
Проверьте, нет ли дублей server_name в разных файлах и какой блок помечен как default_server. Уберите случайные дубли, убедитесь, что ваш домен встречается ровно в одном блоке. Если на сервере несколько сайтов, каждый должен иметь свой чётко заданный server_name, а дефолтный сервер лучше отдать под заглушку, а не под один из реальных сайтов, — тогда неверно направленный домен не будет открывать чужой проект. Полный вывод nginx -T показывает всю картину виртуальных хостов разом.
Проверяем результат и HTTPS
После правок проверьте не только то, что домен открылся, но и что он открылся по HTTPS без ошибок. Частая связанная проблема: домен заработал по HTTP, а по HTTPS — ошибка сертификата, потому что сертификат выпущен на IP или другой домен, либо не выпущен вовсе. Проверяйте оба варианта:
# проверка по HTTP и заголовки ответа
curl -I http://example.com
# проверка HTTPS и сертификата
curl -I https://example.com
Если по HTTPS ошибка сертификата, выпустите сертификат именно на этот домен (certbot --nginx -d example.com -d www.example.com) — сертификат должен покрывать то имя, по которому открывают сайт. Проверьте и редиректы: если настроено перенаправление на HTTPS или на основной домен, убедитесь, что оно ведёт куда нужно, а не зацикливается. Полная проверка — домен открывается и по HTTP, и по HTTPS, и с www, и без — гарантирует, что вы не оставили половину задачи недоделанной.
Профилактика: чтобы домен работал сразу
Чтобы подключение домена проходило гладко, действуйте по порядку. Сначала создайте A-запись на ваш IP и дождитесь, пока она разойдётся, проверив через dig. Затем пропишите домен в server_name нужного сайта, проверьте конфиг через nginx -t и перезагрузите. Выпустите сертификат на этот домен. Проверьте результат через curl по HTTP и HTTPS, с www и без.
Полный контроль над DNS, конфигурацией веб-сервера и сертификатами даёт собственный сервер с root-доступом и чистым выделенным IP. У MAATRIX VPS с чистыми IP доступны в локациях RU, US и UK, с оплатой из России картой или криптой. Когда вы владеете и сервером, и его IP, подключение домена сводится к понятной цепочке из двух шагов — запись в DNS и server_name, — и «сайт открывается по IP, но не по домену» перестаёт быть загадкой.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Заказать VPS для сайтаОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Как понять, DNS виноват или веб-сервер?
Сравните IP из dig +short example.com с IP сервера (curl ifconfig.me). Если домен резолвится не в ваш IP — проблема в DNS. Если резолвится верно, но сайт не тот — дело в конфигурации веб-сервера, в server_name.
Домен не указывает на мой IP — что делать?
Создайте или исправьте A-запись на ваш IP, для домена и для www. Убедитесь, что правите зону там, где домен делегирован (dig NS). Дайте записи время разойтись и проверьте через dig @8.8.8.8.
DNS верный, а открывается чужой сайт или заглушка.
Домен не прописан в server_name нужного блока, и Nginx отдаёт сайт по умолчанию. Добавьте домен в server_name, проверьте на дубли и default_server, затем nginx -t и reload.
По HTTP работает, а по HTTPS ошибка сертификата.
Сертификат не покрывает этот домен. Выпустите его на нужное имя: certbot --nginx -d example.com -d www.example.com. Сертификат должен соответствовать домену, по которому открывают сайт.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.