Блог
Направить собственный домен на сервер тегинга: CNAME, сертификат и ошибка Cloudflare 1014
Опубликовано · 3 мин чтения
Первое имя хоста, которое вы получаете от нас, — случайная метка под signalhost.io. Оно работает, и многим сайтам его достаточно — это уже не googletagmanager.com. Но поддомен вашего собственного домена — та версия, что переживёт любой список фильтров и любое правило браузера, потому что для браузера это просто ваш сайт. Дойти до неё — одна DNS-запись и несколько минут. Слегка ошибиться — получить сообщение об ошибке, которое ничто на вашей стороне не может объяснить, поэтому вот вся процедура, включая сбой.
Почему поддомен вашего собственного сайта
Две причины, и они разные. Для блокировщика рекламы запрос сторонний, если его имя хоста есть в списке; signalhost.io сегодня нет ни в одном, но завтра он там может оказаться; yoursite.com не окажется никогда. Для браузера cookie, установленный ответом от metrics.yoursite.com, — это cookie первого лица для yoursite.com, с более долгим сроком жизни, который из этого следует, тогда как cookie с другого домена урезается или отклоняется. Сервер тегинга в обоих случаях один и тот же. Имя хоста — вот что меняет отношение к нему.
Запись
Одна CNAME у вашего DNS-провайдера, направляющая выбранный поддомен на нашу конечную точку «только DNS»:
metrics.yoursite.com. CNAME tenants.signalhost.io.Не на ваше случайное имя хоста арендатора и не на wildcard. tenants.signalhost.io — имя, которое мы публикуем специально для этого, а почему это должно быть именно оно — в следующем разделе.
Если ваш собственный домен на Cloudflare, создайте запись с ВЫКЛЮЧЕННЫМ прокси — серое облако, «DNS only». Проксируемая запись направляла бы запросы ваших посетителей через ваш аккаунт Cloudflare к нам, и шаг с сертификатом ниже через неё завершиться не может.
Ошибка Cloudflare 1014 и почему цель должна быть «только DNS»
Наши собственные имена хостов стоят за Cloudflare. Если клиент направит свою CNAME на одно из наших проксируемых имён — wildcard или имя хоста арендатора — его трафик придёт в Cloudflare для имени хоста, принадлежащего другому аккаунту Cloudflare, не нашему. Cloudflare отказывает в этом с ошибкой 1014, «CNAME Cross-User Banned». Страница с ней — страница Cloudflare, она не упоминает ни нас, ни вас, и ничто в вашем DNS, на вашем сайте или в браузере её не объясняет.
tenants.signalhost.io намеренно не проксируется: он резолвится прямо на наши серверы, так что CNAME на него просто работает. DNS-проверка в панели распознаёт случай проксируемой цели по имени и говорит, что изменить, но быстрее вообще до него не доводить.
Сертификат
Как только запись резолвится, мы запрашиваем сертификат Let's Encrypt для вашего имени хоста. Проверка — HTTP-01: Let's Encrypt запрашивает определённый путь по обычному HTTP на порту 80 с этого имени, и мы на него отвечаем. Обычный HTTP — потому что сертификата ещё нет, именно он и получается, — и это единственный нешифрованный путь, на который наш край вообще отвечает. Это сравнение nonce; ничего другого этим путём не достичь.
Рассчитывайте на несколько минут. Панель показывает три шага по порядку: CNAME резолвится, сертификат выпущен, имя хоста обслуживается. Шаг, застрявший на сертификате при зелёной CNAME, почти всегда означает проксируемую запись на вашей стороне — Cloudflare отвечает на запрос проверки собственным сертификатом и собственной страницей, и Let's Encrypt видит не то.
Когда обслуживание началось
Тег Google в вашем веб-контейнере несёт URL серверного контейнера, и мы переписываем его на пользовательский домен и переиздаём контейнер, когда имя хоста начинает обслуживаться, — и переписываем обратно на имя хоста арендатора, если вы удаляете домен. Сниппет на вашем сайте не меняется; он загружает контейнер, а контейнер знает, куда отправлять.
Поэтому порядок удаления важен. Сначала удалите домен в панели, затем удалите DNS-запись. Удалите запись первой — и, пока панель не заметит, контейнер по-прежнему направляет ваших посетителей на имя, которое больше не резолвится.
Если не работает
- Ошибка 1014 в браузере: CNAME указывает на наше проксируемое имя. Смените цель на tenants.signalhost.io.
- CNAME зелёная, сертификат в ожидании больше пятнадцати минут: ваша запись проксируется. Сделайте облако серым у DNS-провайдера.
- CNAME никогда не становится зелёной: проверьте, нет ли конфликтующей записи A или AAAA на том же имени — CNAME не может сосуществовать с ними — и дайте распространению до часа.
- Обслуживается, но страница контейнера не показывает трафика с нового имени: веб-контейнер ещё не переиздан. Это происходит в течение пары минут после того, как имя хоста заработало; страница контейнера показывает, на какое имя хоста тег указывает сейчас.
