Когда человек вводит адрес сайта и нажимает Enter, кажется, будто браузер просто «подключился к сайту». На самом деле за доли секунды происходит целая цепочка: DNS, соединение с сервером, TLS и только потом HTTP.
Если понимать эту последовательность, искать причину недоступности становится намного проще.
Шаг 1. URL
Браузер получает адрес:
https://example.com/page
Из него важны:
- схема HTTPS;
- hostname example.com;
- путь /page.
Шаг 2. DNS
Сначала нужно понять, на какой IP подключаться.
example.com
↓ DNS
203.0.113.25
Если DNS не работает, до HTTP браузер вообще не дойдёт.
Шаг 3. Выбор IPv4 или IPv6
У домена могут существовать A и AAAA.
A → IPv4
AAAA → IPv6
Из-за неправильной AAAA часть пользователей может иметь проблему, даже когда IPv4 полностью исправен.
Шаг 4. Сетевой маршрут
Пакеты должны дойти до нужного IP через сеть провайдера и интернет-маршрутизацию.
Проблема здесь уже не является DNS-ошибкой.
Шаг 5. TCP
Для обычного HTTPS браузер должен установить транспортное соединение с портом 443.
Упрощённо:
клиент → SYN
сервер → SYN/ACK
клиент → ACK
Что ломается на TCP-уровне
- порт закрыт;
- firewall блокирует соединение;
- сервер не слушает порт;
- маршрут нарушен;
- адрес указан неправильно.
Шаг 6. TLS
Для HTTPS после установления соединения начинается TLS-handshake.
Клиент и сервер договариваются о защищённом соединении, а сервер показывает сертификат.
На этом этапе проверяется сертификат
Браузер смотрит в том числе:
- срок действия;
- соответствие домену;
- цепочку доверия;
- поддерживаемую версию TLS.
Шаг 7. HTTP
Только после предыдущих уровней браузер отправляет запрос примерно такого смысла:
GET /page HTTP/2
Host: example.com
Шаг 8. Серверное приложение
Nginx или другой frontend может передать запрос дальше:
браузер
↓
nginx
↓
PHP / Node.js / Python / другое приложение
↓
база данных
Поэтому 502 — это уже не DNS
Домен может прекрасно разрешаться, TCP и TLS работать, но backend за nginx упал. Тогда пользователь получает 502.
А 504?
Frontend подключился к backend, но не дождался ответа вовремя.
Как понять, где проблема
Идите в том же порядке, в котором работает соединение:
- DNS.
- IP.
- маршрут.
- порт.
- TLS.
- HTTP.
- приложение.
Проверка DNS
dig example.com A
dig example.com AAAA
Проверка соединения
curl -v https://example.com/
Verbose-режим curl показывает гораздо больше, чем просто конечную страницу.
Проверка конкретного IP
curl --resolve example.com:443:203.0.113.25 https://example.com/
Это позволяет временно проверить сервер, не меняя публичный DNS.
Проверка TLS
openssl s_client -connect example.com:443 -servername example.com
Почему ping недостаточно
Ping проверяет ICMP и не доказывает, что HTTPS работает.
Сервер может игнорировать ping и при этом прекрасно отдавать сайт.
Как NexIP помогает
Смысл набора инструментов NexIP именно в том, чтобы не смотреть на сайт как на чёрный ящик. DNS, SSL, HTTP-заголовки, IP и доступность — разные уровни одной цепочки.
FAQ
Если DNS работает, сайт обязан открываться?
Нет. DNS — только первый этап.
Если ping идёт, сайт исправен?
Нет.
Почему полезно проверять уровни по порядку?
Так вы не тратите время на SSL, когда домен вообще указывает не туда, или на DNS, когда ошибка уже очевидно находится в backend.
Диагностика NexIP
Продолжите реальной проверкой
Откройте полный раздел диагностики и проверьте сайт, домен или сетевые параметры.
Читайте дальше
Материалы по теме
Что показывают HTTP-заголовки
Полное руководство по HTTP-заголовкам: request и response headers, кеш, redirects, cookies, CORS, security headers, CDN и диагностика через curl и NexIP.
ЧитатьКак проверить доступность сайта
Пошаговая диагностика недоступного сайта: домен, DNS, IP, маршрут, TCP, TLS, HTTP-коды, curl, IPv4/IPv6, CDN и проверка через NexIP.
ЧитатьHTTP-коды ответа: что означают 200, 301, 404, 500 и другие
Когда браузер открывает страницу, сервер отвечает не только HTML-кодом. Вместе с ответом он отправляет числовой HTTP-статус: 200, 301, 404, 500 и так далее. Эти три цифры часто позволяют понять проблему быстрее, чем длинное сообщение…
Читать