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. Эта ошибка почти всегда указывает на проблему на стороне сервера или промежуточного оборудования, а не на устройство посетителя.
Что сделать посетителю
- Перезагрузите страницу через минуту: процесс на сервере мог перезапускаться.
- Откройте сайт в другом браузере или в режиме инкогнито (
Ctrl+Shift+N). - Отключите VPN, прокси и расширения. Некоторые защитные сервисы закрывают соединения без ответа.
- Проверьте через мобильный интернет. Если с телефона работает, дело в сети: провайдере, роутере, антивирусе с проверкой трафика.
- Сбросьте DNS-кэш (
ipconfig /flushdnsв Windows) и смените DNS на 1.1.1.1 или 8.8.8.8. - Отключите антивирус или файрвол с веб-фильтром на время проверки.
- Подождите и сообщите владельцу сайта, если ошибка постоянная и не зависит от устройства.
Причины на стороне сервера
- Аварийное завершение процесса. PHP-FPM, Node.js, Python или Java-приложение упало во время запроса. Если упал бэкенд, а nginx закрыл соединение, браузер увидит пустой ответ.
- Нехватка памяти. Ядро Linux (OOM killer) убивает процесс.
- Намеренное закрытие. В nginx код
444закрывает соединение без ответа: его используют для отсечения мусорных запросов, но если правило сработало на настоящих посетителей, вы получите ERR_EMPTY_RESPONSE. - Файрвол, WAF или система защиты от атак режет соединение после установления.
- Ошибка в конфигурации прокси, из-за которой апстрим сбрасывает запрос.
- Несовпадение протокола или порта, когда клиент говорит с портом, который ожидает другого протокола.
Как найти причину
# что видит клиент
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 ответа нет, а размер тела нулевой.
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:
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 ответа с кодом нет совсем.