Сайт открывается у владельца и разработчика, но на iPhone, iPad или Mac после нескольких переходов зависает и на несколько минут перестаёт отвечать. Для бизнеса это опасный «тихий» сбой: общий мониторинг может оставаться зелёным, пока часть посетителей не видит каталог, корзину или форму заявки.
Само совпадение с Apple-устройством ещё не указывает на причину. TLS 1.3, HTTP/2, IPv6, CDN/WAF и сетевая фильтрация — проверяемые гипотезы, а не готовый диагноз. До изменений в production нужно воспроизвести симптом, отделить устройство от сети и сопоставить внешнюю проверку с логами.
Кому это актуально
Материал пригодится владельцам сайтов и интернет-магазинов, если:
- сайт работает в офисе, но клиенты жалуются на iPhone, iPad или Mac;
- первое открытие проходит нормально, а после переходов сайт «замирает» на несколько минут;
- по Wi-Fi и LTE результат различается;
- на Android или Windows всё работает, поэтому обращение ошибочно считают единичным;
- серверный мониторинг не видит полного падения, но заявки или заказы могут теряться.
Чем точнее зафиксированы условия, тем быстрее подрядчик отличит ошибку сайта от сбоя на CDN, сетевом маршруте или устройстве.
Почему один симптом даёт несколько гипотез
Фраза «не открывается на iPhone» описывает результат, но не слой поломки. Возможные причины лежат в разных местах:
- Устройство и сессия. Кеш, cookie, расширение, приватный режим или конкретная последовательность переходов меняют запросы.
- DNS и маршрут. Для IPv4 и IPv6 могут использоваться разные адреса и сетевые пути; устаревшая AAAA-запись способна вести не туда, куда A-запись.
- HTTPS-контур. SNI, цепочка сертификата, TLS 1.2/1.3 и согласование протокола через ALPN зависят от конфигурации точки, которая принимает внешнее соединение.
- CDN, WAF и антибот. Временное правило, лимит или защитная блокировка могут сработать после серии запросов.
- Proxy и origin-сервер. Reverse proxy может отвечать, пока backend уже недоступен, либо наоборот.
- Сеть оператора и внешняя фильтрация. Этот вариант рассматривают, только когда запрос не доходит до внешнего контура или результат устойчиво зависит от сети.
Похожая длительность отказа — например, несколько минут — полезна для диагностики, но сама по себе ничего не доказывает. Она может совпасть и с временем защитной блокировки, и с кешем, и с повторным подключением, и с восстановлением backend.
Диагностический минимум: что сравнить до правок
Составьте небольшую матрицу одного и того же URL. Не ограничивайтесь фразой «на телефоне не работает».
- iPhone по Wi-Fi и тот же iPhone по LTE;
- Android в тех же сетях;
- Mac и Windows в одной сети;
- первое открытие, повторное обновление и серия переходов по сайту;
- точное время начала отказа и время восстановления;
- главная страница, проблемная внутренняя страница, форма или корзина;
- режимы с VPN, iCloud Private Relay и блокировщиком контента — не отключайте их навсегда, а только зафиксируйте, меняется ли симптом.
Для каждого сценария сохраните устройство, версию ОС и браузера, сеть, URL, текст ошибки и время с часовым поясом. Если возможно, сделайте скриншот. В ту же минуту запустите разовую проверку в Web-Puls: отчёт покажет HTTP-код, финальный URL, DNS, TLS, HTTP/2, TTFB и признаки CDN/WAF. Это независимая контрольная точка, а не доказательство доступности для всех сетей.
Что проверить в DNS, IPv4 и IPv6
Сначала сравните внешние записи домена. Если у сайта есть и A, и AAAA, проверяйте оба маршрута отдельно:
dig A example.ru
dig AAAA example.ru
curl -4 -Iv https://example.ru/
curl -6 -Iv https://example.ru/
Отказ curl -6 важен только тогда, когда домен действительно публикует AAAA-запись и IPv6 должен работать. Если адреса ведут на CDN или балансировщик, их нужно сопоставить с текущей схемой размещения. Не удаляйте AAAA вслепую: сначала подтвердите, что сбой воспроизводится именно на IPv6 и что изменение не затронет другой контур.
Как корректно сравнить TLS 1.2 и TLS 1.3
У curl параметр --tlsv1.2 задаёт минимальную версию, поэтому без верхнего ограничения соединение может согласовать TLS 1.3. Для проверки ровно TLS 1.2 добавьте --tls-max 1.2:
curl -Iv --tlsv1.2 --tls-max 1.2 https://example.ru/
curl -Iv --tlsv1.3 --tls-max 1.3 https://example.ru/
Для проверки сертификата и SNI подойдут отдельные соединения OpenSSL:
openssl s_client -connect example.ru:443 -servername example.ru -tls1_2
openssl s_client -connect example.ru:443 -servername example.ru -tls1_3
openssl s_client -connect example.ru:443 -noservername -tls1_2
Сравнивайте не только успешность рукопожатия, но и сертификат, его промежуточную цепочку, имя хоста и точку завершения TLS. Ответ без SNI может отличаться штатно: он нужен, чтобы увидеть конфигурацию сервера по умолчанию, а не чтобы объявить её ошибочной.
Если HTTPS завершается на CDN, WAF или отдельном балансировщике, изменение TLS на origin-сервере не меняет внешний handshake. Проверять и менять нужно фактическую точку входа.
HTTP/2, редиректы и сертификат
Проверьте, какой протокол согласован через ALPN, и сравните HTTP/2 с HTTP/1.1:
curl -Iv --http2 https://example.ru/
curl -Iv --http1.1 https://example.ru/
curl -IL https://example.ru/
Так видны версия HTTP, цепочка редиректов и переходы между www и доменом без www. Отдельно проверьте срок сертификата, Subject Alternative Name и промежуточные сертификаты.
В публичном практическом разборе, обновлявшемся в июле 2026 года, описана гипотеза, что при некоторых сценариях сетевой фильтрации большое число TLS-соединений по HTTP/1.1 может усиливать проблему, а переход на HTTP/2 меняет картину. Это полезный сигнал для A/B-проверки, но не универсальная причина и не гарантия исправления. HTTP/2, TLS 1.3 и ТСПУ нельзя связывать причинно без воспроизведения и логов конкретного сайта.
Что искать в логах
Сопоставьте точное время пользовательского отказа минимум на двух уровнях: внешнем контуре и origin-сервере.
- дошёл ли запрос до CDN/WAF или reverse proxy;
- есть ли событие антибота, rate limit или временной блокировки;
- дошёл ли запрос до Nginx/Apache и backend;
- появились ли upstream timeout, reset, 499/502/503 или ошибки TLS;
- совпадает ли сбой с релизом, сменой сертификата, DNS или защитных правил;
- есть ли различия между IPv4 и IPv6.
Если на origin нет запроса, это не означает автоматически блокировку оператором: запрос мог остановиться на DNS, CDN, WAF, балансировщике или маршруте. Если запрос есть, анализируйте код ответа и длительность обработки, а не только факт записи в access log.
Когда допустима временная смена TLS-настроек
Ограничить внешний контур TLS 1.2 можно рассматривать как временный диагностический workaround, только если сравнение сетей и протоколов показывает устойчивую разницу. Перед изменением нужны:
- резервная копия действующего конфига;
- понимание, где завершается TLS — CDN, proxy или веб-сервер;
- проверка синтаксиса конфигурации;
- reload без остановки сервиса, если стек это поддерживает;
- повтор тестов TLS 1.2/1.3, HTTP/2, IPv4/IPv6 и пользовательского сценария;
- срок контрольной проверки и план возврата.
Официальная документация NGINX показывает, что директива ssl_protocols управляет разрешёнными версиями и по умолчанию включает TLS 1.2 и TLS 1.3. В Apache это делает SSLProtocol, причём поведение виртуальных хостов зависит от версии Apache/OpenSSL и SNI. Поэтому готовую строку нельзя без проверки переносить между серверами, панелями хостинга и CDN.
Какие риски закрывает такой подход
Последовательная диагностика снижает риск:
- скрытой потери заявок от части мобильной аудитории;
- хаотичного отключения современных протоколов без подтверждения;
- изменения не того слоя, который принимает HTTPS;
- маскировки ошибки CDN/WAF или IPv6 под «проблему iPhone»;
- долгого спора между разработчиком, хостингом и оператором без единого времени и набора фактов;
- повторного инцидента после временного исправления без мониторинга.
Главная цель — не угадать виновника, а получить воспроизводимый сценарий и безопасно проверить одну гипотезу за раз.
Что запросить у подрядчика
Попросите не общий ответ «у нас всё работает», а короткий технический отчёт:
- матрицу устройств, сетей и времени воспроизведения;
- результаты IPv4/IPv6, TLS 1.2/1.3, SNI и HTTP/2;
- проверку цепочки сертификата и редиректов;
- сопоставление событий CDN/WAF и серверных логов;
- описание каждого временного изменения и способа отката;
- контрольную проверку после исправления и мониторинг проблемного URL.
Пароли, приватные ключи и полные конфиги не нужно отправлять в переписку. Доступы передают через согласованный защищённый канал.
Как это решает OpenStart
OpenStart начинает с воспроизведения: сравнивает доступность с разных сетей, фиксирует момент отказа и проверяет путь от DNS и внешнего HTTPS-контура до backend. Затем команда сопоставляет TLS, SNI, HTTP/2, IPv4/IPv6, сертификат, редиректы и логи, чтобы выбрать минимальное обратимое изменение.
Если сайт уже теряет посетителей, можно запросить аварийное восстановление доступности. Для повторяющихся сбоев полезнее регулярная техническая поддержка: мониторинг, журнал изменений и контроль после релизов помогают замечать частичную недоступность раньше жалоб клиентов.
FAQ
Почему сайт может не открываться только на iPhone или Mac?
Устройства могут использовать другой DNS-ответ, IPv6-маршрут, сетевой выход или состояние сессии. Это повод сравнить условия, но не доказательство ошибки Apple, Safari или TLS.
Если отключение TLS 1.3 помогло, причина точно в нём?
Нет. Изменение могло поменять TLS-отпечаток, точку терминации или поведение промежуточного оборудования. Результат нужно подтвердить повторными тестами и сохранить план возврата.
Почему сайт сначала работает, а потом пропадает на несколько минут?
Так могут проявляться временные защитные правила, rate limit, проблемы повторных соединений, кеш или нестабильность backend. Точный интервал и логи важнее предположения о причине.
Web-Puls подтверждает, что сайт доступен всем?
Нет. Разовая проверка показывает состояние из точки проверки и помогает сохранить технические факты. Для плавающей проблемы нужны сравнение сетей и история мониторинга.
Что отправить в поддержку первым сообщением?
URL, устройство и ОС, браузер, LTE или Wi-Fi, точное время отказа и восстановления, текст ошибки, скриншот и ссылку на сохранённый внешний отчёт. Этого достаточно, чтобы начать диагностику без передачи секретов.
Источники
- [curl: параметры TLS и
--tls-max](https://curl.se/docs/manpage.html#--tls-max) - [OpenSSL:
s_client, SNI и версии TLS](https://docs.openssl.org/3.5/man1/openssl-s_client/) - [NGINX:
ssl_protocols](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols) - NGINX: HTTPS и SNI
- [Apache HTTP Server:
SSLProtocol](https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslprotocol) - Публичный практический разбор частичной сетевой недоступности на Habr
- Web-Puls: проверить сайт