Веб

Почему сайт Next.js на Vercel не открывается на мобильных?

Сайт на Next.js, развернутый на Vercel с кастомным доменом, не открывается с мобильных устройств в России без VPN. Причины блокировки IP Vercel операторами, проверка DNS и обход через Cloudflare. Пошаговое решение проблемы.

Почему сайт на Next.js, развернутый на Vercel с кастомным доменом, не открывается с мобильных устройств без VPN?

Я развернул проект на Next.js на Vercel успешно и привязал домен, купленный на Reg.ru. Я добавил DNS-серверы Vercel в настройках домена на Reg.ru, а в Vercel через ‘add domain’ добавил свой домен.

При проверке сайта обнаружил, что он без проблем открывается с компьютера. Однако с мобильных устройств сайт открывается только при подключении к Wi-Fi или через мобильный интернет с активным VPN. При этом обычный сайт Vercel (с доменом .vercel.app) открывается без проблем даже с мобильного интернета без VPN.

Возможно ли, что проблема связана с блокировкой Vercel российскими операторами мобильной связи? Или я неправильно настроил DNS-серверы при подключении домена?

Скорее всего причина не в Reg.ru и не в Next.js как таковом, а в блокировке IP‑адресов Vercel для кастомных доменов в российских мобильных сетях: кастомные домены обычно резолвятся в общий A‑адрес (например, 76.76.21.21), который мобильные операторы иногда блокируют, тогда как *.vercel.app идёт по другим путям и открывается. Проверьте A/CNAME‑записи (dig/nslookup) и поведение при подключении через мобильный интернет; при подтверждении блокировки надёжный обход — проксирование через CDN (например, Cloudflare) или настройка обратного прокси.


Содержание


Почему сайт на Next.js на Vercel не открывается с мобильных устройств

Коротко о механике: при привязке кастомного домена Vercel даёт требования по DNS — для корневого домена обычно A‑запись на общий адрес(а) платформы (в обсуждениях часто упоминают 76.76.21.21 и диапазон 76.76.21.0/24), для поддоменов — CNAME на cname.vercel-dns.com. Многие пользователи в РФ сообщают, что эти IP блокируются оператором мобильной связи, поэтому кастомный домен не отвечает по мобильному интернету, хотя тот же проект по адресу *.vercel.app открывается нормально (он проходит через другие маршруты/edge‑сервисы) — примеры таких жалоб и разборов есть в сообществе Vercel и на GitHub (см. примеры ниже) https://github.com/vercel/next.js/discussions/31528, https://community.vercel.com/t/accessing-website-in-russia/17670.

Как понять, что это именно блокировка, а не ошибка настроек? Типичные признаки:

  • сайт открывается по Wi‑Fi, но не открывается по мобильным данным (без VPN);
  • при подключении по мобильной сети в браузере — таймаут/ERR_CONNECTION_TIMED_OUT или похожая ошибка, а не «NXDOMAIN»;
  • .vercel.app работает, кастомный домен — нет;
  • DNS‑результат кастомного домена показывает IP Vercel (76.76.21.21) — см. раздел проверки ниже.

Vercel официально описывает сценарии диагностики сетевых проблем и рекомендует тесты с разными сетями (Wi‑Fi, мобильный хот‑спот) как первый шаг: https://vercel.com/guides/troubleshooting-connectivity-issues и https://vercel.com/docs/domains/troubleshooting.


Проверка DNS: как понять, почему домен не открывается

Что нужно сделать сейчас — быстрый чек-лист и команды (замените yourdomain.com на ваш домен):

  1. Проверить, на какой IP резолвится домен:
  • macOS/Linux:
bash
dig +short yourdomain.com
dig +short www.yourdomain.com
dig +short yourproject.vercel.app
dig @8.8.8.8 +short yourdomain.com
  • Windows:
powershell
nslookup yourdomain.com 8.8.8.8
  1. Сравнить IP кастомного домена и .vercel.app:
  1. Принудительная проверка подключения к конкретному IP:
bash
curl -v --resolve yourdomain.com:443:76.76.21.21 https://yourdomain.com/
  • если команда таймаутится по мобильной сети — оператор блокирует доступ к этому IP.
  1. Трассировка маршрута (traceroute/tracert) со смартфона (через терминал или приложение) может показать, где обрывается маршрут — на сети оператора.

  2. Проверьте заголовки ошибок в браузере: DNS‑ошибки (NXDOMAIN) указывают на проблему с записями; таймауты/отказы — на сетевой/фильтрационный блок.

В официальной документации Vercel есть рекомендации по диагностике подобных проблем и что проверять сначала — полезно пройти эти шаги перед сменой настроек: https://vercel.com/guides/troubleshooting-connectivity-issues и https://vercel.com/docs/domains/troubleshooting.


Как обойти блокировку: быстрые и надёжные решения

Что делать, если проверка подтвердила блокировку IP Vercel:

  1. Cloudflare (самый распространённый и удобный вариант)
  • Почему: Cloudflare выступит в роли обратного прокси — ваши клиенты будут обращаться к IP Cloudflare, а Cloudflare уже будет запрашивать содержимое у Vercel. Это «скроет» Vercel‑IP от мобильного оператора.
  • Шаги (упрощённо):
  1. Зарегистрируйте аккаунт в Cloudflare и добавьте домен.
  2. На стороне Reg.ru поменяйте NS на nameservers Cloudflare.
  3. В DNS Cloudflare добавьте CNAME: @ → cname.vercel-dns.com (Cloudflare сделает CNAME‑flatten для корня) и www → cname.vercel-dns.com.
  4. Пока идёт верификация в Vercel — держите записи в Cloudflare в режиме «DNS only» (серый облачок), чтобы Vercel видел нужные значения и мог подтвердить домен.
  5. После успешной верификации включите прокси (оранжевый облачок) — трафик будет идти через Cloudflare.
  6. В Cloudflare выберите SSL/TLS = «Full (strict)», если хотите гарантировать TLS между Cloudflare и Vercel.
  • Примечание: многие пользователи сообщают об успехе с Cloudflare при аналогичных проблемах (см. обсуждения в сообществе).
  1. Cloudflare Workers / Tunnel
  • Если простого проксирования недостаточно, можно написать worker, который проксирует запросы к вашему .vercel.app, или использовать Cloudflare Tunnel. Это даёт гибкость, но требует чуть больше усилий.
  1. Обратный прокси на VPS
  • Поднять небольшой VPS (nginx) и направить A‑запись домена на этот VPS; настроить nginx как reverse‑proxy к yourproject.vercel.app. Плюс: полный контроль. Минус: поддержка, аптайм, SSL и стоимость.
  1. Сменить DNS/провайдера, поддерживающего «CNAME flattening» или ALIAS/ANAME так, чтобы не публиковать проблемный A‑IP напрямую (аналогично Cloudflare, но без проксирования это не решит блокировку — нужно, чтобы провайдер также делал проксирование).

  2. Обращение к оператору и Vercel

  • Можно попробовать написать в службу поддержки мобильного оператора (для бизнеса чаще помогает) и в техподдержку Vercel, приложив результаты dig, traceroute, пример времени и оператора. В сообществе Vercel уже есть подтверждённые случаи — приложите ссылки на аналогичные тix: https://community.vercel.com/t/urgent-production-domain-bbqp-pro-is-blocked-in-russia-confirmed-vercel-ip-issue/29141.
  1. Временное решение
  • Перенаправлять пользователей на проект.vercel.app (не брендовое, но быстро) или рекомендовать использовать VPN / мобильный хот‑спот (временно).

Плюсы/минусы Cloudflare: быстрое и дешёвое решение для большинства случаев; однако возможны нюансы с проверкой домена (нужно временно отключить прокси) и с кэшированием/правилами. Reverse‑proxy на VPS даёт полный контроль, но требует управления сервером.


Частые ошибки при настройке домена на Vercel

  • Включение Cloudflare‑прокси до верификации домена в Vercel — Vercel не увидит ожидаемые записи и не завершит привязку. Сначала «DNS only», потом включаете прокси.
  • Неправильно установленные NS у регистратора (оставлены старые записи) — проверьте, что Reg.ru принял новые NS и что они распространились.
  • Ожидание мгновенной пропагации — иногда TTL даёт задержку до 24–48 часов.
  • Путаница A vs CNAME: для корня часто используют A‑записи Vercel (если вы делегировали NS на Vercel), но при использовании стороннего DNS лучше ставить CNAME на cname.vercel-dns.com с CNAME‑flatten/ALIAS.
  • Неправильные настройки SSL в прокси (например, Cloudflare в режиме Flexible) — ставьте Full или Full (strict) для корректного TLS между прокси и Vercel.
  • Не проверяли сайт именно через мобильную сеть (иногда Wi‑Fi — корпоративное/домашнее — не даёт репродукции проблемы).

Если вы сомневаетесь в текущих записях, покажите вывод dig/nslookup в техподдержку Vercel или здесь — это упростит диагностику.


Источники


Заключение

Если кратко: поведение — типичный признак блокировки Vercel IP для кастомных доменов в мобильных сетях России; .vercel.app часто работает, потому что идёт по другому маршруту. Первое, что нужно сделать — выполнить dig/nslookup и сравнить адреса кастомного домена и .vercel.app. Быстрое и надёжное решение — проксировать домен через CDN (Cloudflare) или настроить обратный прокси; если хочется — свяжитесь с Vercel и мобильным оператором, приложив результаты диагностики. Для сайта на Next.js на Vercel это самый практичный путь, чтобы восстановить доступность на мобильных без постоянной зависимости от VPN.

Авторы
Проверено модерацией
Модерация
Почему сайт Next.js на Vercel не открывается на мобильных?