Вы создали сайт с помощью ИИ, и он прекрасно работает, но на вашем собственном компьютере. В адресной строке написано localhost:3000 или, может быть, набор цифр вроде 203.0.113.10. Вы отправляете ссылку другу, а она не открывается.
Это не ошибка. Это разрыв между тем, чтобы запустить сайт, и тем, чтобы его опубликовать, а недостающий элемент почти всегда — доменное имя. В этом руководстве объясняется разница между адресами, которыми вы, возможно, пользуетесь сейчас, почему большинство из них не могут быть настоящим адресом вашего сайта и как перейти на настоящий домен при любом типе хостинга.
В этом руководстве
Четыре вида адресов
До сайта можно добраться четырьмя разными способами. Они выглядят похоже, но работают совершенно по-разному.
| Тип адреса | Пример | Кто может открыть |
|---|---|---|
| localhost | http://localhost:3000 | Только компьютер, на котором он запущен |
| IP в локальной сети | http://192.168.1.20 | Устройства в том же Wi-Fi или за тем же роутером |
| IP сервера | http://203.0.113.10 | Любой пользователь сети, но см. ниже |
| Доменное имя | https://mysite.com | Любой человек где угодно |
Числа в этом руководстве — примеры. Диапазон 203.0.113.x зарезервирован для примеров, поэтому он никогда не указывает на реальный сервер.
Почему localhost работает только для вас
localhost (пишется также 127.0.0.1) означает «эта же машина». Когда вы вводите его, ваш компьютер обращается сам к себе. Когда ваш друг вводит тот же адрес, его компьютер обращается сам к себе, ничего не находит и показывает ошибку. Это слово на каждом устройстве означает своё.
Адреса, начинающиеся с 192.168., 10. или с 172.16. по 172.31., — то же самое в более крупном масштабе. Это частные адреса, которые используются внутри домов и офисов. Люди в вашем Wi-Fi могут их открыть, но в интернете — никто.
Запуск сайта на своём компьютере — правильный способ его создавать. Проблема начинается, когда это единственное место, где он существует. Кроме того, сайт доступен только пока ваш компьютер включён и приложение запущено.
Почему IP сервера — не настоящий адрес
Когда сайт работает на настоящем сервере, будь то виртуальный хостинг, VPS или облачная машина, его можно открыть по IP-адресу сервера. Некоторые на этом останавливаются. Это создаёт несколько проблем:
- Сервер может не знать, какой сайт показывать. Один IP часто обслуживает много сайтов, а сервер решает, какой показать, по доменному имени в запросе. Если открыть голый IP, вы можете получить страницу по умолчанию, ошибку или чужой сайт.
- Нет нормального HTTPS. HTTPS обычно настраивают для доменного имени, а для голого IP стандартный бесплатный сертификат, как правило, получить нельзя. Без HTTPS браузеры показывают «Не защищено», а всё, что вводят посетители, например пароли и данные форм, передаётся в читаемом виде.
- Ломается при переезде. IP принадлежит серверу. Если вы смените хостинг или тариф, номер изменится, и все ссылки, которыми вы делились, перестанут работать. С доменом достаточно направить его на новый сервер.
- Ему не доверяют ни люди, ни фильтры. Многие спам-фильтры и средства защиты считают ссылки из одних цифр подозрительными, а посетители не могут их запомнить или узнать.
- Нет профессиональной почты. Адрес вроде
hello@mysite.comтребует домена. - Дубликаты для поисковых систем. Если сайт отвечает и по IP, и по домену, поисковики могут увидеть две копии каждой страницы.
Что такое домен на самом деле
Компьютеры находят друг друга по IP-номерам. Доменное имя — это удобная метка для такого номера, а система под названием DNS работает как телефонный справочник интернета: вы называете имя, а она возвращает номер.
Участвуют три стороны:
- Регистратор: компания, в которой вы регистрируете домен. Домен не покупают навсегда. Его арендуют, обычно на год, и продлевают.
- DNS: хранит записи, которые указывают, на какой сервер ведёт ваш домен.
- Ваш хостинг: место, где лежат файлы вашего сайта.
Разместите сайт на своём домене
У всех хостингов шаги по сути одни и те же. Отличаются только кнопки и названия меню.
1. Узнайте, где находится ваш сайт
На что направлять домен, зависит от типа вашего хостинга:
| Где находится сайт | Что даёт хостинг-провайдер | Обычная запись |
|---|---|---|
| Виртуальный хостинг | IP-адрес сервера | A-запись на этот IP |
| VPS или облачный сервер | IP-адрес сервера | A-запись на этот IP |
| Платформа для сайтов (например, Vercel, Netlify или Render) | Имя хоста, на которое нужно направить, и иногда IP | CNAME или A, как укажет платформа |
За точными значениями всегда обращайтесь к инструкциям вашего хостинг-провайдера. Они есть в его панели или документации, а часто и в приветственном письме.
2. Направьте домен на ваш хостинг
Это можно сделать двумя способами. Выберите один, не оба.
- Вариант А: сменить серверы имён (nameservers). У регистратора замените серверы имён домена на те, что дал ваш хостинг. С этого момента все записи вы ведёте в панели хостинга.
- Вариант Б: оставить DNS там, где он есть (у регистратора или в сервисе вроде Cloudflare) и добавить записи там: A-запись, которая направляет домен на IP вашего сервера, и запись CNAME, чтобы
wwwследовал за ним.
Частая ловушка: записи действуют только там, где на самом деле размещён DNS вашего домена. Если вы сменили серверы имён на серверы хостинга (вариант А), записи, добавленные у регистратора, игнорируются, и наоборот.
3. Сообщите хостингу о домене
Направить домен на сервер недостаточно. Сервер тоже должен знать, какой сайт относится к этому имени. У каждого хостинга для этого есть своё место: страница Домены на виртуальном хостинге (пример — в cPanel), строка server_name в настройках веб-сервера на вашем собственном сервере или вкладка Домены в настройках проекта на платформе. Если пропустить этот шаг, домен доходит до сервера, но показывает страницу по умолчанию.
4. Подождите, пока DNS распространится
Это называется распространением. Оно может занять от нескольких минут до суток-двух, хотя часто проходит быстро. Пока оно не закончилось, домен у некоторых людей может не открываться или показывать старую страницу.
5. Включите HTTPS
Большинство платформ и многие хостинги автоматически устанавливают бесплатный сертификат, как только ваш домен указывает на них. На собственном сервере можно воспользоваться бесплатным сервисом сертификатов вроде Let's Encrypt с инструментом Certbot. В обоих случаях домен уже должен указывать на сервер. Когда всё готово, настройте сайт на перенаправление всех заходов с http на https.
6. Выберите одну версию адреса
mysite.com и www.mysite.com считаются двумя разными адресами. Выберите один основным и перенаправьте второй на него. У платформ обычно есть для этого настройка. На сервере Apache это делают следующие правила (поместите их в файл .htaccess сайта). Первое отправляет www на домен без www, а второе отправляет на ваш домен каждого, кто пришёл по голому IP сервера:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule ^(.*)$ https://mysite.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^203\.0\.113\.10$
RewriteRule ^(.*)$ https://mysite.com/$1 [L,R=301]
Замените пример домена и IP на свои. В Nginx или другом сервере идея та же, но синтаксис отличается, поэтому загляните в его документацию.
Исправьте скрытые адреса в коде
В коде, написанном ИИ, часто жёстко прописан localhost. На работающем сайте это ломает всё запутанным образом. Браузер посетителя воспринимает localhost как свой собственный компьютер, поэтому ваша страница пытается загрузить данные с машины, которая не имеет к вашему сайту никакого отношения.
Плохо:
fetch("http://localhost:3000/api/products")
Хорошо (работает везде):
fetch("/api/products")
Найдите во всём проекте localhost, 127.0.0.1, 192.168 и любые IP, которыми вы пользовались. Затем проверьте следующие места:
- Настройки URL сайта: значения вроде
APP_URLилиBASE_URLдолжны использовать ваш настоящий домен сhttps. - Сервисы входа и оплаты: вход через Google, платёжные шлюзы и похожие сервисы требуют в своих панелях ваш настоящий домен как разрешённый адрес перенаправления (callback). Вебхуки оплаты вообще не могут достучаться до
localhost, потому что серверам шлюза нужен публичный HTTPS-адрес. - Разрешённые источники (CORS): если в коде перечислены разрешённые адреса, замените
localhostна свой домен. - Карта сайта и canonical-теги: они должны показывать домен, а не IP и не локальный адрес.
Одно исключение: адрес базы данных зависит от вашей конфигурации. У многих хостингов база данных работает на том же сервере, что и сайт, поэтому localhost там правильный. Для облачных или управляемых баз данных поставщик даёт отдельный адрес, который нужно использовать. Никогда не оставляйте базу данных открытой для всего интернета.
Частые проблемы
- «Не удаётся получить доступ к сайту» сразу после настройки: возможно, DNS ещё не распространился или какая-то запись неверна. Подождите, затем проверьте записи.
- Домен показывает страницу хостинга по умолчанию: домен доходит до вашего сервера, но сервер не знает, что сайт принадлежит ему. Добавьте домен в настройках хостинга.
- Показывается старый или чужой сайт: старая запись или кэш браузера. Попробуйте приватное окно или другую сеть.
- «Не защищено» или ошибка сертификата: сертификат ещё не выпущен или домен пока не указывает на ваш хостинг.
- Работает с
www, но не без него (или наоборот): не хватает записи. Добавьте CNAME дляwww. - Туннельный инструмент для демонстрации: такие инструменты, как ngrok или Cloudflare Tunnel, подходят для быстрой проверки, но это не хостинг.
- Открытие домашнего роутера в интернет (проброс портов): избегайте. Это выставляет вашу домашнюю сеть напоказ, а домашние IP часто меняются.
Защитите свой домен
Домен — самый ценный адрес, которым вы владеете, поэтому защитите его:
- Включите автоматическое продление. Домен с истёкшим сроком может зарегистрировать кто-то другой.
- Используйте надёжный уникальный пароль и двухфакторную аутентификацию в аккаунте у регистратора.
- Включите блокировку у регистратора, которая не даёт перенести домен без вашего согласия.
- Держите контактную почту актуальной, потому что именно туда приходят уведомления о продлении и безопасности.
Самопроверка за 2 минуты
- Откройте
http://IP-ВАШЕГО-СЕРВЕРА. Он не должен показывать ваш сайт (или должен перенаправлять на ваш домен). - Откройте
http://mysite.com. Вы должны попасть наhttps://mysite.comсо значком замка. - Откройте версию с
www. Вы должны попасть на тот же итоговый адрес. - Найдите в проекте
localhostи любые IP-номера. - В терминале выполните
nslookup mysite.com. Ответ должен показать IP вашего хостинга (а на платформе — указывать на её серверы).
Короткий чек-лист
- Используйте
localhostтолько для разработки, никогда как свой адрес - Зарегистрируйте домен и включите автопродление и двухфакторную аутентификацию
- Направьте его на хостинг через серверы имён (вариант А) или через A- и CNAME-записи (вариант Б), но не обоими способами
- Добавьте домен в настройках хостинга, чтобы сервер знал, к какому сайту он относится
- Дождитесь распространения DNS, затем включите HTTPS
- Выберите одну версию (с
wwwили без) и перенаправьте вторую - Замените каждый
localhostи IP в коде и обновите панели входа и оплаты - Не позволяйте сайту отвечать по голому IP сервера
Домен превращает «работает на моём компьютере» в «любой может зайти». Настройте его один раз как следует, и все ссылки, которыми вы делитесь, продолжат работать, даже если позже вы смените хостинг.
