Заглушка появляется, когда запрос доходит до сервера, но веб-сервер не находит виртуальный хост, который должен его обработать. Тогда он отдаёт страницу «по умолчанию»: приветствие nginx или Apache либо шаблон хостинга. Обычно причин три. Домен направлен на сервер, где сайта с таким именем нет. Посетитель заходит по HTTPS, а SSL-сертификат не установлен. Или у домена есть AAAA-запись, а сайт работает только по IPv4.

Как сервер решает, какой сайт показать
На одном IP-адресе часто размещены десятки сайтов. Сервер различает их по заголовку Host в HTTP-запросе, а при HTTPS по полю SNI. Это имя он сравнивает со списком доменов в конфигурации, например с директивой server_name в nginx или ServerName и ServerAlias в Apache. Если совпадения нет, запрос уходит в блок default_server. Там и лежит заглушка.
Отсюда частая ошибка: A-запись в DNS уже указывает на новый сервер, а сайт в панели хостинга ещё не создан или создан под другим именем. Так бывает и с версией «с www». Домен добавлен без неё, поэтому www.example.ru попадает в общий блок. Похожая картина возникает при переезде любого проекта, от блога до страницы производителя, где описан Забор Еврожалюзи. Пока DNS и настройки сервера не совпадут, часть посетителей видит пустой шаблон вместо содержимого.
Признаки и причины: сводная таблица
| Что видно в браузере | Вероятная причина | Чем проверить |
|---|---|---|
| «Welcome to nginx!» или «Apache2 Default Page» по HTTP | Домен указывает на сервер, но сайта с таким именем там нет | dig A example.ru, затем список доменов в панели или в server_name |
| Сайт по HTTP открывается, по HTTPS заглушка или предупреждение о сертификате | SSL-сертификат для домена не установлен | openssl s_client -connect example.ru:443 -servername example.ru |
| У одних пользователей сайт работает, у других (часто в мобильной сети) заглушка | Есть AAAA-запись, а сайт настроен только на IPv4 | dig AAAA example.ru, curl -6 -I https://example.ru |
| Без www сайт открывается, с www заглушка | Не добавлен псевдоним (алиас) www | curl -I http://www.example.ru |
| После смены DNS у части людей старый сайт, у части заглушка | Кеш DNS ещё не обновился (зависит от TTL записи) | dig example.ru @8.8.8.8 и сравнение с NS-серверами домена |
Почему HTTPS и IPv6 дают заглушку, даже если сайт настроен
С HTTPS ловушка неочевидная. Сайт может быть описан для порта 80, а для 443 блока с этим доменом нет. Тогда защищённое соединение принимает первый попавшийся HTTPS-хост на сервере. Браузер получает чужой сертификат или самоподписанный сертификат хостинга и показывает ошибку. Если пользователь её пропустит, откроется заглушка. Ситуация обостряется, когда браузер сам переводит адрес на HTTPS, например из-за ранее полученного заголовка HSTS.
С IPv6 логика та же, только на уровне адресов. Многие регистраторы и DNS-хостинги добавляют AAAA-запись автоматически. Клиент с поддержкой IPv6 предпочитает её, и его запрос приходит на IPv6-адрес сервера. Если виртуальный хост слушает только IPv4 (в nginx есть listen 80;, но нет listen [::]:80;), ответит хост по умолчанию. Поэтому проблема «плавающая»: у владельца сайта всё работает, а посетители жалуются.
Что делать, если вместо сайта открывается заглушка
- Сравните адреса. Выполните dig A и dig AAAA для домена и сверьте результат с IP, который выдал хостинг. Лишнюю или устаревшую AAAA-запись удалите либо настройте сайт на работу по IPv6.
- Проверьте, что домен добавлен на сервер. В панели хостинга должен быть сайт с точным именем домена. Версию с www укажите как алиас, иначе она так и будет показывать заглушку.
- Посмотрите конфигурацию веб-сервера. В nginx команда nginx -T | grep server_name покажет все имена, в Apache то же покажет apachectl -S. После правок проверьте синтаксис (nginx -t) и перезагрузите конфигурацию.
- Выпустите и подключите SSL-сертификат именно для этого домена и его www-версии. Убедитесь, что блок для порта 443 существует, а не только для 80.
- Если DNS меняли недавно, подождите, пока истечёт TTL старой записи. Пока ждёте, проверьте сайт через curl —resolve example.ru:443:IP https://example.ru: так видно, готов ли сервер, без учёта кеша.
- Очистите локальный кеш DNS и кеш браузера, затем откройте сайт в режиме инкогнито. Иначе можно принять за ошибку то, что уже исправлено.