Блог
Все статьиПочему сайт не открывается на iPhone, но работает на Android: разбор реальной поломки с CDN и TLS 1.3
Сайт работает, сервер в порядке, логи чистые, но у половины клиентов на iPhone он либо не грузится, либо превращается в неработающую картинку. Разбираем реальный кейс из практики: при чём тут CDN, TLS 1.3 и белые списки РКН.
История одной «странной» поломки
Сайт работает. Сервер в порядке. Логи чистые. Но у половины клиентов — особенно на iPhone — он либо не грузится, либо превращается в неработающую картинку. У кого-то всё открывается и на телефоне, и на компьютере. У кого-то — нет.
Знакомо? Сегодня разберём реальный кейс из практики веб-студии Webzella: почему так происходит и при чём тут CDN и TLS 1.3.
Что случилось
Мы сделали сайт для небольшой клиники. Стек — современный: FastAPI на бэкенде, React на фронтенде, статика и медиа раздаются через S3 CDN. Всё работало, пока в один день не начались жалобы: «Сайт не открывается на айфоне», «Кнопки не нажимаются», «Загружается как картинка, но не работает».
При этом на Android и на компьютерах всё было в порядке. У части пользователей на iPhone — тоже. Классическая «плавающая» проблема, которую сложно поймать.
Мы проверили кеширование, посмотрели логи ошибок — там было пусто. Сервер отвечал корректно. Код был в порядке. Тогда мы начали копать глубже.
Что такое CDN и почему он стал проблемой
CDN (Content Delivery Network) — это сеть географически распределённых серверов, которые кэшируют копии контента вашего сайта и отдают их пользователю из ближайшей к нему точки.
Зачем это нужно: чтобы пользователь из Владивостока не ждал картинку с сервера в Москве, а получил её с локального узла CDN. Это снижает нагрузку на основной сервер и ускоряет загрузку.
Какие бывают CDN:
- «Большие дата-центры» (Big Data Center CDN). Несколько мощных дата-центров в ключевых точках. Хорошо для общего ускорения, но серверы всё ещё могут быть далеко от пользователя.
- Высоко распределённые CDN (Highly Distributed). Серверы (точки присутствия) находятся максимально близко к пользователям, часто прямо внутри сетей интернет-провайдеров. Это даёт минимальную задержку, но дороже в обслуживании.
Почему это стало проблемой в РФ. Многие CDN используют общие IP-адреса для сотен клиентов. Если эти адреса не в «белых списках» РКН или попадают под фильтрацию, сайт может перестать открываться у части пользователей — даже если сам сайт технически исправен.
В нашем случае именно так и произошло: CDN-провайдер использовал адреса, которые не входили в белые списки. Сам сайт работал корректно, но трафик до него не доходил.
Что такое TLS 1.3 и почему именно он «ломает» iPhone
TLS (Transport Layer Security) — это протокол шифрования. Тот самый «замочек» в браузере (HTTPS), который защищает передачу данных — пароли, карты, переписку — от посторонних глаз.
Чем отличается TLS 1.3 от 1.2:
- Скорость. TLS 1.3 устанавливает соединение быстрее — за один «круг» обмена данными, а не за два.
- Безопасность. В 1.3 убрали старые и уязвимые алгоритмы шифрования, а также зашифровали больше служебной информации о самом соединении.
Почему из-за него не работает на iPhone. В новых версиях iOS (15–16+) Apple использует в TLS 1.3 постквантовый обмен ключами (гибридный). Из-за этого самое первое сообщение (ClientHello) при попытке установить соединение становится «непривычно большим».
Промежуточное оборудование (ТСПУ / DPI) на стороне мобильного оператора видит этот нестандартный пакет, не может его правильно распознать и просто обрывает соединение.
Результат: сертификат (даже Минцифры) тут не поможет, потому что соединение рвётся до того, как браузер и сервер успевают что-то проверить. Именно поэтому на Android или ПК (где стоят другие алгоритмы) всё работало, а на iPhone — нет.
Что делать: выводы
Не паниковать. Если сайт работает у одних и не работает у других на iPhone — это почти на 100% инфраструктурная блокировка (ТСПУ/DPI), а не ошибка в вашем коде.
Что можно сделать:
- Если вы используете CDN, попросите поддержку принудительно ограничить версию TLS до 1.2 для вашего ресурса. TLS 1.2 — старый, стабильный протокол, который фильтры пропускают без проблем.
- Если это собственный сервер (Nginx), можно временно отключить поддержку TLS 1.3 в конфигурации, оставив только 1.2, чтобы «переждать» период нестабильности.
- Для будущих проектов: если нужна предсказуемая доступность в РФ, используйте CDN с возможностью выделенного IP в России или размещайте статику на собственном сервере с российским IP, который можно заявить в белый список.
Вместо заключения
Эта история — хороший пример того, что современный сайт — это не только код. Это инфраструктура: CDN, серверы, протоколы шифрования. И иногда проблема, которая выглядит как «баг в коде», на самом деле находится на уровне сети.
Если вы столкнулись с похожей ситуацией и не понимаете, почему сайт ведёт себя странно, — напишите нам в Webzella. Разберёмся, найдём причину и предложим решение. Без «трансформации» ради слова.
Соберите смету или напишите — обсудим задачу.
Услуги Webzella
Читайте также
FAQ: Всё о разработке в Webzella — сроки, цены, технологии и стартСобрали ответы на главные вопросы, которые задают перед началом работы. Как проходит первый контакт, из чего складывается цена, почему мы выбираем React + FastAPI и что делать, если у вас пока есть только идея.
Tilda, WordPress или React+FastAPI: где на самом деле живёт безопасность вашего сайтаСоздание сайта под ключ за выходные — заманчиво. Но когда сайт начинает принимать платежи и хранить данные клиентов, «быстро и недорого» оборачивается скрытыми рисками. Разбираем, почему безопасность — это не плагин, а архитектура, и сравниваем Tilda, WordPress, вайбкодеров и кастом на React+FastAPI.Автоматизация бизнеса без корпоративного бюджета: с чего начать, чтобы не пожалеть«Цифровая трансформация» звучит как что-то из отчёта McKinsey. На самом деле для бизнеса с 10–50 сотрудниками это означает: перестать делать вручную то, что может делать система. Разбираем, какие процессы автоматизировать первыми, сколько это стоит и когда кастом на React + FastAPI выгоднее «коробки».