Monitor404

ERR_EMPTY_RESPONSE: что значит и как исправить ошибку

ERR_EMPTY_RESPONSE — сервер принял соединение, но закрыл его, не отправив ни одного байта ответа. Для посетителя достаточно перезагрузки, отключения VPN и проверки в другом браузере. Для владельца это сигнал: процесс сервера упал, правило файрвола или конфигурация закрывают соединение.

Обновлено 11 октября 2026 г.

Что значит ERR_EMPTY_RESPONSE

Браузер установил соединение с сервером и отправил запрос, но сервер оборвал соединение без ответа: ни статуса, ни заголовков, ни тела. Поскольку нет ни одной строки ответа, нет и HTTP-кода: ни 500, ни 502, ни 404. Это отличает ERR_EMPTY_RESPONSE от ошибок, где сервер хотя бы сообщил о проблеме, например 502 Bad Gateway.

В curl тот же случай выглядит как curl: (52) Empty reply from server. Эта ошибка почти всегда указывает на проблему на стороне сервера или промежуточного оборудования, а не на устройство посетителя.

Что сделать посетителю

  1. Перезагрузите страницу через минуту: процесс на сервере мог перезапускаться.
  2. Откройте сайт в другом браузере или в режиме инкогнито (Ctrl+Shift+N).
  3. Отключите VPN, прокси и расширения. Некоторые защитные сервисы закрывают соединения без ответа.
  4. Проверьте через мобильный интернет. Если с телефона работает, дело в сети: провайдере, роутере, антивирусе с проверкой трафика.
  5. Сбросьте DNS-кэш (ipconfig /flushdns в Windows) и смените DNS на 1.1.1.1 или 8.8.8.8.
  6. Отключите антивирус или файрвол с веб-фильтром на время проверки.
  7. Подождите и сообщите владельцу сайта, если ошибка постоянная и не зависит от устройства.

Причины на стороне сервера

  • Аварийное завершение процесса. PHP-FPM, Node.js, Python или Java-приложение упало во время запроса. Если упал бэкенд, а nginx закрыл соединение, браузер увидит пустой ответ.
  • Нехватка памяти. Ядро Linux (OOM killer) убивает процесс.
  • Намеренное закрытие. В nginx код 444 закрывает соединение без ответа: его используют для отсечения мусорных запросов, но если правило сработало на настоящих посетителей, вы получите ERR_EMPTY_RESPONSE.
  • Файрвол, WAF или система защиты от атак режет соединение после установления.
  • Ошибка в конфигурации прокси, из-за которой апстрим сбрасывает запрос.
  • Несовпадение протокола или порта, когда клиент говорит с портом, который ожидает другого протокола.

Как найти причину

Linux-сервер: диагностика
# что видит клиент
curl -v https://example.ru/

# ошибки веб-сервера
tail -n 100 /var/log/nginx/error.log

# падения PHP-FPM (имя юнита зависит от версии)
journalctl -u php8.2-fpm --since "1 hour ago"

# убивал ли процессы OOM killer
dmesg | grep -i -E "out of memory|killed process"

# слушают ли порты
ss -tlnp | grep -E ":(80|443) "

В логе nginx ищите сообщения вроде upstream prematurely closed connection (бэкенд оборвал ответ) и recv() failed (104: Connection reset by peer). В журнале доступа на запросах с кодом 444 ответа нет, а размер тела нулевой.

nginx: так намеренно закрывают соединения на запросы по IP или с неизвестным Host
server {
    listen 80 default_server;
    server_name _;
    return 444;
}

Убедитесь, что такое правило не перехватывает запросы к вашему домену: в нужном server должен быть явный server_name example.ru www.example.ru;.

ERR_EMPTY_RESPONSE на localhost и в Docker

Частый случай для разработчиков: localhost:3000 отвечает пустым ответом. Приложение внутри контейнера слушает только 127.0.0.1, поэтому проброшенный порт принимает соединение, но достучаться до приложения не может. Слушайте 0.0.0.0:

Node.js (Express)
app.listen(3000, "0.0.0.0");

Для Vite — флаг --host, для Django — python manage.py runserver 0.0.0.0:8000. Проверьте также, что порт проброшен правильно (-p 3000:3000) и что процесс в контейнере не падает: docker logs <контейнер>.

Проверка снаружи

Проверьте ответ вашего сайта с внешней точки: проверка кода ответа покажет, возвращает ли сервер статус. Если запрос завершается без статуса, воспроизвелась та же проблема. Если снаружи статус 200, а у посетителей ошибка, смотрите на файрвол, защиту от ботов и ограничения по IP.

Сбои вроде падения процесса часто проявляются периодически. Monitor404 показывает, какие адреса отвечают ошибками и откуда на них переходят посетители.

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

Что значит ERR_EMPTY_RESPONSE?

Сервер принял соединение, но закрыл его, не отправив ответа: ни кода, ни заголовков, ни тела.

Как исправить ERR_EMPTY_RESPONSE посетителю?

Перезагрузите страницу, откройте сайт в другом браузере или инкогнито, отключите VPN и расширения, проверьте через мобильный интернет, сбросьте DNS-кэш.

Почему ERR_EMPTY_RESPONSE на localhost?

Чаще всего приложение в Docker-контейнере слушает 127.0.0.1 вместо 0.0.0.0 или процесс падает при запросе. Проверьте адрес привязки и логи контейнера.

Чем ERR_EMPTY_RESPONSE отличается от 502?

При 502 шлюз получил от бэкенда неверный ответ и сам вернул HTTP-ответ с кодом. При ERR_EMPTY_RESPONSE ответа с кодом нет совсем.

Читайте также