Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (1)

Лучшие ответы пользователя

Все ответы (1)
  • Как определить причину неудачи запроса в IOS?

    @Manilove
    Я нашел решение
    Поделюсь своей историей

    Проблема: сайт перестал открываться на любых iOS (MacBook,iphone) в браузере safari. Бесконечная загрузка.
    При этом на iPhone, Mac в других браузерах прекрасно работало.
    В логах nginx запросы приходили, иногда даже отдавался 200, но на телефоне страница висела до таймаута.

    Что проверял:

    Сначала исключил TLS/сертификат: перевыпустил Let’s Encrypt с ECDSA на RSA (issuer стал R12/R13, Public Key Algorithm: rsaEncryption) — стало “правильнее”, но проблему на iOS это не сняло.
    Пробовал отключать TLS 1.3 (оставлял TLS 1.2) и проверял через openssl s_client — тоже не помогло.
    Проверил, что HTTP/2 не используется (в listen 443 не было http2) — значит не он.
    Где была причина:

    В gzip-сжатии ответов nginx. На части старых iOS/сетей (часто из‑за прокси/DPI/особенностей маршрута) сжатые ответы обрабатывались некорректно — страница “висела”, хотя сервер формально отвечал.
    Как решил:

    Стояло
    gzip on;

    Для проверки временно выключил gzip:
    gzip off;
    После этого на проблемных iPhone всё сразу заработало — стало понятно, что виноват gzip.
    Вернул gzip, но настроил “безопасно”:
    gzip on;
    gzip_http_version 1.1;
    gzip_comp_level 5;
    gzip_min_length 1024;
    gzip_vary on;
    gzip_proxied any;
    gzip_types
    text/plain
    text/css
    application/json
    application/javascript
    text/xml
    application/xml
    application/xml+rss
    text/javascript;
    После этого сайт стал открываться на любых iOS (MacBook,iphone) в браузере safari.

    Как проверил:

    Убедился, что gzip реально работает:
    curl -I -H 'Accept-Encoding: gzip' https://site.ru/ | grep -i content-encoding
    → Content-Encoding: gzip
    И что есть Vary: Accept-Encoding, чтобы кеши не ломались.
    Итог:
    В моем случае проблема была не в приложении (VUE) и не в домене/хостинге, а в том, как nginx сжимал ответы. Правильная настройка gzip решила проблему.
    Ответ написан
    Комментировать