Домены и SSL
Домены есть только у сервисов, которые принимают трафик из интернета: «Сервер с HTTP» и «Статический сайт». Воркер домена не получает, см. типы сервисов.
Поддомен по умолчанию
При создании Web-сервиса вы выбираете имя, и сервис сразу получает адрес вида:
<имя>.apps.hostim.app
Сертификат TLS для него выпускается автоматически (Let's Encrypt) при первом успешном деплое, поэтому сервис доступен по HTTPS без каких-либо действий с вашей стороны.
Собственный домен
Чтобы сервис отвечал на вашем домене (например, example.com), нужно три шага, и порядок имеет значение: сначала DNS, потом добавление в панели.
Шаг 1. Настройте DNS
IP-адрес для записи показан в панели, в блоке доменов сервиса рядом с полем добавления. То есть его видно до того, как вы что-то добавите. Скопируйте адрес и создайте у своего DNS-провайдера A-запись на него: и для корневого домена (example.com), и для поддомена (app.example.com).
Для поддомена вместо A-записи подойдёт CNAME на адрес сервиса <имя>.apps.hostim.app, он ведёт на тот же входной узел. Для корневого домена CNAME не годится: большинство DNS-провайдеров его там не допускают.
Шаг 2. Дождитесь, пока запись обновится
Новая запись расходится по DNS не мгновенно: обычно это минуты, но зависит от TTL прежней записи у провайдера. Проверить можно с любой машины:
dig +short app.example.com
# или
nslookup app.example.com
В ответе должен быть тот же IP, что показан в панели. Пока его нет, переходить к шагу 3 смысла мало.
Шаг 3. Добавьте домен в сервисе
В блоке доменов сервиса введите домен и нажмите «Добавить домен». Платформа настроит маршрутизацию и запросит сертификат TLS. Отдельно покупать или загружать сертификат не нужно.
Если добавить домен раньше, чем обновится DNS, ничего непоправимого не произойдёт. Сертификат не выпустится, домен останется в статусе
pending, а платформа будет периодически перепроверять его и переведёт вactive, как только домен начнёт резолвиться на неё. Но ждать HTTPS придётся заметно дольше, чем при правильном порядке: центр сертификации после неудачной попытки выдерживает паузу.
Добавление домена перезапускает сервис
Добавление и удаление собственного домена применяются немедленно и перезапускают сервис. Это нужно, чтобы применить маршрутизацию и выпустить сертификат. На время перезапуска сервис недоступен, поэтому планируйте изменение домена на момент низкой нагрузки. Поддомена по умолчанию это не касается: он настраивается при первом деплое.
По той же причине управление доменами заблокировано в двух состояниях:
- Сервис остановлен. Применить домен означает поднять сервис, а это отменило бы вашу же остановку. Сначала запустите сервис.
- Идёт развёртывание. Дождитесь окончания сборки, иначе в очередь встала бы вторая сборка того же кода.
Статусы сертификата
- pending: сертификат ещё не выпущен. Обычно означает, что DNS пока не указывает на платформу или запись не успела распространиться.
- active: сертификат выпущен, домен работает по HTTPS.
Переход из pending в active происходит автоматически: платформа периодически перепроверяет домены в ожидании.
Частые ошибки
| Симптом | Причина | Решение |
|---|---|---|
Сертификат долго висит в pending | DNS не указывает на платформу или ещё не распространился | Проверьте запись через dig; когда домен начнёт резолвиться на нужный IP, статус сменится сам |
| «Домен занят» при выборе поддомена | Имя уже используется | Выберите другое имя |
| Кнопка «Добавить домен» недоступна | Сервис остановлен или идёт развёртывание | Запустите сервис либо дождитесь окончания сборки |
| У воркера нет поля домена | Домен есть только у сервисов, доступных снаружи | Для внешнего доступа используйте «Сервер с HTTP» или «Статический сайт» |