Почему сайт 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 не открывается с мобильных устройств
- Проверка DNS: как понять, почему домен не открывается
- Как обойти блокировку: быстрые и надёжные решения
- Частые ошибки при настройке домена на Vercel
- Источники
- Заключение
Почему сайт на 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 на ваш домен):
- Проверить, на какой IP резолвится домен:
- macOS/Linux:
dig +short yourdomain.com dig +short www.yourdomain.com dig +short yourproject.vercel.app dig @8.8.8.8 +short yourdomain.com
- Windows:
nslookup yourdomain.com 8.8.8.8
- Сравнить IP кастомного домена и .vercel.app:
- если кастомный домен возвращает 76.76.21.21 (или адреса из того же /24), а .vercel.app — другой набор адресов и при мобильном интернете .vercel.app открывается, то это сильный индикатор блокировки оператором (см. примеры из сообщества: https://community.vercel.com/t/the-ip-address-of-my-server-on-vercel-has-been-blocked-in-my-country/26076).
- Принудительная проверка подключения к конкретному IP:
curl -v --resolve yourdomain.com:443:76.76.21.21 https://yourdomain.com/
- если команда таймаутится по мобильной сети — оператор блокирует доступ к этому IP.
-
Трассировка маршрута (traceroute/tracert) со смартфона (через терминал или приложение) может показать, где обрывается маршрут — на сети оператора.
-
Проверьте заголовки ошибок в браузере: DNS‑ошибки (NXDOMAIN) указывают на проблему с записями; таймауты/отказы — на сетевой/фильтрационный блок.
В официальной документации Vercel есть рекомендации по диагностике подобных проблем и что проверять сначала — полезно пройти эти шаги перед сменой настроек: https://vercel.com/guides/troubleshooting-connectivity-issues и https://vercel.com/docs/domains/troubleshooting.
Как обойти блокировку: быстрые и надёжные решения
Что делать, если проверка подтвердила блокировку IP Vercel:
- Cloudflare (самый распространённый и удобный вариант)
- Почему: Cloudflare выступит в роли обратного прокси — ваши клиенты будут обращаться к IP Cloudflare, а Cloudflare уже будет запрашивать содержимое у Vercel. Это «скроет» Vercel‑IP от мобильного оператора.
- Шаги (упрощённо):
- Зарегистрируйте аккаунт в Cloudflare и добавьте домен.
- На стороне Reg.ru поменяйте NS на nameservers Cloudflare.
- В DNS Cloudflare добавьте CNAME:
@ → cname.vercel-dns.com(Cloudflare сделает CNAME‑flatten для корня) иwww → cname.vercel-dns.com. - Пока идёт верификация в Vercel — держите записи в Cloudflare в режиме «DNS only» (серый облачок), чтобы Vercel видел нужные значения и мог подтвердить домен.
- После успешной верификации включите прокси (оранжевый облачок) — трафик будет идти через Cloudflare.
- В Cloudflare выберите SSL/TLS = «Full (strict)», если хотите гарантировать TLS между Cloudflare и Vercel.
- Примечание: многие пользователи сообщают об успехе с Cloudflare при аналогичных проблемах (см. обсуждения в сообществе).
- Cloudflare Workers / Tunnel
- Если простого проксирования недостаточно, можно написать worker, который проксирует запросы к вашему .vercel.app, или использовать Cloudflare Tunnel. Это даёт гибкость, но требует чуть больше усилий.
- Обратный прокси на VPS
- Поднять небольшой VPS (nginx) и направить A‑запись домена на этот VPS; настроить nginx как reverse‑proxy к yourproject.vercel.app. Плюс: полный контроль. Минус: поддержка, аптайм, SSL и стоимость.
-
Сменить DNS/провайдера, поддерживающего «CNAME flattening» или ALIAS/ANAME так, чтобы не публиковать проблемный A‑IP напрямую (аналогично Cloudflare, но без проксирования это не решит блокировку — нужно, чтобы провайдер также делал проксирование).
-
Обращение к оператору и 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.
- Временное решение
- Перенаправлять пользователей на проект.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 — Troubleshooting connectivity issues
- Vercel — Domains troubleshooting
- GitHub discussion: Vercel IP is blocked in Russia, Docs are not available
- Vercel community: Problem with accesbility to domain from Russia
- Vercel community: Accessing website in Russia (A record 76.76.21.21)
- Vercel community: Production domain blocked in Russia (confirmed Vercel IP issue)
- Vercel community: The IP address of my server on Vercel has been blocked in my country
- Reddit /r/nextjs discussion on Vercel IP blocking
Заключение
Если кратко: поведение — типичный признак блокировки Vercel IP для кастомных доменов в мобильных сетях России; .vercel.app часто работает, потому что идёт по другому маршруту. Первое, что нужно сделать — выполнить dig/nslookup и сравнить адреса кастомного домена и .vercel.app. Быстрое и надёжное решение — проксировать домен через CDN (Cloudflare) или настроить обратный прокси; если хочется — свяжитесь с Vercel и мобильным оператором, приложив результаты диагностики. Для сайта на Next.js на Vercel это самый практичный путь, чтобы восстановить доступность на мобильных без постоянной зависимости от VPN.