Доступность сайтов и uptime

Почему сайт не открывается: полный алгоритм диагностики

Пошаговая диагностика сайта, который не открывается: локальная проблема, DNS, TCP, TLS, HTTP, redirect, CDN, reverse proxy, приложение и критичные URL.

Опубликовано: 26 августа 2026 г.Обновлено: 26 августа 2026 г.
Схема полного пути диагностики недоступного сайта от пользователя и DNS до TLS, HTTP, proxy и приложения

Если сайт не открывается, первая задача — определить на каком уровне ломается путь от пользователя до приложения, а не перезапускать всё подряд. Один и тот же симптом браузера может быть вызван DNS, сетью, TLS, redirect, CDN, reverse proxy, приложением или конкретной бизнес-функцией.

Практичный порядок: клиент → DNS → TCP → TLS → HTTP → proxy/CDN → приложение → критичный сценарий.

Сначала определите симптом

Зафиксируйте, что именно происходит:

  • DNS error;
  • connection refused;
  • timeout;
  • TLS/certificate error;
  • redirect loop;
  • HTTP 4xx/5xx;
  • белая страница;
  • сайт открыт, но login/API/checkout не работает;
  • проблема только у части пользователей.

Слои диагностики недоступного сайта: клиент, DNS, TCP, TLS, HTTP, proxy, приложение и бизнес-функция

Без этого легко исследовать Nginx, когда проблема в DNS, или DNS, когда сервер стабильно возвращает 500.

Шаг 1. Проверьте из другой сети

  1. приватное окно;
  2. другой браузер;
  3. другое устройство;
  4. мобильная сеть;
  5. curl.

Если проблема только на одном устройстве, исследуйте локальные cookies, VPN/proxy, расширения, resolver и сеть.

Связанный материал: как проверить, работает ли сайт прямо сейчас.

Шаг 2. Проверьте DNS

dig example.com

или:

nslookup example.com

Проверьте наличие ответа, A/AAAA адреса и соответствие ожидаемой инфраструктуре.

Для сравнения resolver:

dig @1.1.1.1 example.com
dig @8.8.8.8 example.com

Различие ответов помогает увидеть DNS-кеш/распространение, но не доказывает глобальную проблему само по себе.

Шаг 3. Отделите DNS от HTTP через curl --resolve

Если известен правильный IP:

curl -i \
  --resolve example.com:443:203.0.113.10 \
  https://example.com/

--resolve сохраняет hostname в URL и для TLS/SNI, но соединяется с указанным IP.

Шаг 4. Проверьте TLS

openssl s_client \
  -connect example.com:443 \
  -servername example.com \
  </dev/null

-servername передаёт SNI. Если TLS не устанавливается, HTTP application ещё не получило нормальный HTTPS request.

Не используйте curl -k как исправление: он отключает certificate verification.

Шаг 5. Получите HTTP status

curl -i https://example.com/

или:

curl -sS -o /dev/null \
  -w 'code=%{http_code} total=%{time_total}s\n' \
  https://example.com/

Если сервер возвращает HTTP status, путь DNS/TCP/TLS уже прошёл достаточно далеко для HTTP response.

Шаг 6. Проверьте redirect

Сначала:

curl -i http://example.com/

Затем при необходимости:

curl -iL http://example.com/

При redirect loop исследуйте переходы HTTP/HTTPS, www/non-www, CDN и application.

Шаг 7. Измерьте этапы запроса

curl -sS -o /dev/null \
  -w 'dns=%{time_namelookup}s connect=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n' \
  https://example.com/

Большой time_namelookup указывает на DNS-направление; time_connect — сеть/TCP; time_appconnect — TLS; задержка до time_starttransfer — server/proxy/application processing.

Шаг 8. Локализуйте слой

DNS отвечает?
 ├─ нет → DNS/resolver
 └─ да
    TCP:443 есть?
     ├─ нет → routing/firewall/load balancer
     └─ да
        TLS проходит?
         ├─ нет → certificate/SNI/TLS
         └─ да
            HTTP code?
             ├─ 4xx → request/access/routing
             ├─ 5xx → proxy/application/dependency
             └─ 2xx/3xx → контент/функция

Дерево диагностики сайта, который не открывается: от DNS и TCP до TLS, HTTP и приложения

Шаг 9. Если ответ 502/503/504

  • 502 — proxy получил некорректный upstream response;
  • 503 — сервис временно не готов;
  • 504 — gateway не дождался upstream.

Связанные материалы: 502, 503, 504.

Шаг 10. Сравните public URL и upstream

curl -i http://127.0.0.1:8080/health

Если local upstream работает, а public HTTPS нет, проблема находится между пользователем и приложением. Но простой /health не доказывает работоспособность бизнес-функции.

Шаг 11. Проверьте несколько URL

for url in \
  'https://example.com/' \
  'https://example.com/login' \
  'https://example.com/api/health'
do
  curl -sS -o /dev/null -w "$url -> %{http_code} %{time_total}s\n" "$url"
done

Главная может быть закеширована, пока динамический endpoint уже не работает.

Сайт работает по IP, но не по домену

Прямой IP-тест не воспроизводит hostname/SNI/virtual host. Используйте --resolve, если хотите корректно отделить DNS от HTTPS.

Сайт работает по HTTP, но не по HTTPS

Проверьте listener 443, certificate, SNI, TLS, CDN certificate, origin certificate и redirect HTTP→HTTPS.

Связанный материал: как проверить SSL-сертификат сайта.

Сайт работает у вас, но не у других

Сравните DNS, IPv4/IPv6, CDN edge, WAF/IP policy, ISP route и certificate chain. Один успешный запрос не доказывает внешнюю доступность.

Сайт не открывается после релиза

Проверьте app readiness, port/listener, upstream, environment, migrations, TLS, health endpoint и logs по времени первого failure.

Если deployment явно вызвал массовый сбой и существует проверенная rollback-процедура, rollback может быть правильным действием, но причину всё равно нужно зафиксировать.

Как работать с логами

время внешнего failure
→ proxy/access log
→ request ID
→ application log
→ dependency log/metric

Сначала сузьте время и URL, потом читайте логи.

Как понять, что сайт восстановился

for i in {1..20}; do
  curl -sS -o /dev/null \
    -w '%{http_code} %{time_total}\n' \
    https://example.com/
  sleep 2
done

Подтверждение восстановления сайта: несколько последовательных успешных проверок DNS, TLS, HTTP и критичных URL

При load balancer один success может попасть на здоровый backend, пока другой ещё неисправен.

Почему нужен внешний мониторинг

Ручная проверка не показывает, когда произошёл ночной сбой и как часто он повторяется. UpWatch можно использовать для регулярных внешних HTTP/HTTPS-проверок критичных URL и фиксации времени failure/recovery.

Типичные ошибки

  • сразу перезапускать сервер;
  • проверять только ping;
  • использовать curl -k как решение;
  • проверять только /;
  • менять DNS до локализации;
  • считать один 200 доказательством восстановления.

Практический чек-лист

  1. Зафиксировать симптом и URL.
  2. Проверить из другой сети.
  3. Проверить DNS.
  4. При необходимости использовать --resolve.
  5. Проверить TLS.
  6. Получить HTTP status.
  7. Проверить redirect.
  8. Снять timings.
  9. Локализовать слой.
  10. Сравнить public URL/upstream.
  11. Проверить критичные URL.
  12. Сопоставить с logs/deployment.
  13. Подтвердить recovery серией.
  14. Настроить внешний контроль.

Источники и документация

Частые вопросы

С чего начать, если сайт не открывается?

Сначала зафиксируйте симптом и проверьте тот же URL из другой сети. Затем двигайтесь слоями: DNS, TCP/TLS, HTTP, proxy и приложение.

Почему сайт открывается по IP, но не по домену?

Причина может быть в DNS, но прямой IP-тест не воспроизводит hostname/SNI/virtual host. Для корректной проверки удобнее curl --resolve.

Достаточно ли ping для проверки сайта?

Нет. Ping использует ICMP и не проверяет DNS, TLS, HTTP и приложение.

Можно ли использовать curl -k для диагностики?

Только как временный диагностический приём с пониманием риска. -k отключает проверку сертификата и не является исправлением TLS-проблемы.

Как убедиться, что сайт восстановился?

Проверьте серию запросов к нескольким критичным URL и убедитесь в стабильных ожидаемых кодах и нормальном времени ответа.

Схема пошаговой проверки доступности сайта от DNS и TLS до HTTP и критичных URL
Доступность сайтов и uptime

Как проверить, работает ли сайт прямо сейчас

Практический алгоритм проверки сайта: отличаем проблему браузера от реальной недоступности, проверяем DNS, TCP/TLS, HTTP-код, время ответа и несколько критичных URL.

Читать материал
Временная шкала downtime сайта с моментами обнаружения сбоя и восстановления
Доступность сайтов и uptime

Что такое downtime сайта и чем он опасен

Что считать downtime сайта, какие бывают уровни недоступности, как измерять простой при дискретных проверках и отличать реальный инцидент от единичной ошибки мониторинга.

Читать материал
Схема возникновения 502 Bad Gateway между Nginx и upstream-приложением
HTTP-ошибки и диагностика

Ошибка 502 Bad Gateway: причины и пошаговая диагностика

Что означает HTTP 502 Bad Gateway, чем она отличается от 500 и 504 и как проверить Nginx, upstream, контейнеры, сокеты, DNS, TLS и логи.

Читать материал
Схема возникновения HTTP 503 при временной недоступности приложения или его инфраструктуры
HTTP-ошибки и диагностика

Ошибка 503 Service Unavailable: почему возникает и что делать

Что означает HTTP 503, почему сервис временно перестаёт принимать запросы и как по шагам проверить перегрузку, maintenance, backend-инстансы, зависимости и восстановление.

Читать материал
Схема HTTP 504 Gateway Timeout между reverse proxy и медленно отвечающим upstream
HTTP-ошибки и диагностика

Ошибка 504 Gateway Timeout: причины и диагностика

Почему reverse proxy или gateway возвращает HTTP 504, как найти медленный upstream, проверить timeout, приложение, БД, внешние зависимости, Docker и Kubernetes.

Читать материал
Проверка SSL-сертификата сайта: доменное имя, цепочка доверия и срок действия
SSL, HTTPS, DNS и домены

Как проверить SSL-сертификат сайта

Как проверить сертификат в браузере и через OpenSSL: имя хоста, сроки notBefore/notAfter, цепочку сертификатов, SNI и оставшееся время до истечения.

Читать материал