Skip to content
EN

ERR_EMPTY_RESPONSE: сервер ничего не отправил

Коротко:

ERR_EMPTY_RESPONSE — сервер установил TCP-соединение, но закрыл его без отправки HTTP-ответа. Типично для PHP-FPM/Apache crash, nginx timeout до upstream, OOM kill. Причины: backend упал, worker_connections закончились, DB query завис. Исправление: проверить логи backend, error_log nginx, systemctl status, увеличить memory_limit PHP.

Эта ошибка блокирует HTTPS-доступ. Ниже: причины, исправление, рабочий конфиг, FAQ.

Проверить заголовки сайта →

Причины ошибки

  • PHP-FPM/Apache worker crash или segfault
  • nginx upstream timeout — backend не успевает ответить
  • OOM killer убил PHP/worker
  • DB connection pool исчерпан — запрос ждёт и сервер рвёт соединение
  • Backend бесконечно возвращает 499 (client closed) в redirect loop
  • Cloudflare Error 520 (server returns empty reply)

Пошаговое исправление

  1. Проверьте tail -f /var/log/nginx/error.log — ищите "upstream prematurely closed" или "recv() failed"
  2. PHP-FPM логи: tail -f /var/log/php8.x-fpm.log — ищите "child exited on signal" или OOM
  3. Увеличьте memory_limit: php_admin_value[memory_limit] = 512M
  4. Проверьте статус: systemctl status php-fpm nginx — всё running?
  5. Мониторьте uptime через Enterno Monitor — сразу узнаете о флапах
  6. Если Cloudflare — проверьте origin через curl -H "Host: example.com" https://IP/

Проверить HTTP-ответ →

Пример: правильная настройка TLS в nginx

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;

    ssl_stapling        on;
    ssl_stapling_verify on;
}

Смежные SSL-ошибки

ERR_EMPTY_RESPONSE — что это такое?

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

Причины возникновения ошибки ERR_EMPTY_RESPONSE

Существует несколько основных причин, по которым может возникать ошибка ERR_EMPTY_RESPONSE. Ниже приведены наиболее распространенные из них:

  • Проблемы с сервером: Веб-сервер может быть неправильно настроен или перегружен. Например, если сервер работает на Apache, проверьте файл конфигурации httpd.conf на наличие ошибок.
  • Проблемы с сетевым соединением: Если между клиентом и сервером возникают сетевые сбои, это может привести к отсутствию ответа. Используйте команду ping для проверки доступности сервера.
  • Файлы .htaccess: Неправильные настройки в файле .htaccess могут вызывать проблемы с доступом к ресурсам. Проверьте его на наличие ошибок или временно отключите для диагностики.
  • Проблемы с брандмауэром: Иногда брандмауэр может блокировать исходящий или входящий трафик, что приводит к ошибке. Проверьте настройки брандмауэра и убедитесь, что необходимые порты открыты.
  • Проблемы с браузером: Иногда ошибка может быть связана с кешированием или расширениями браузера. Попробуйте очистить кеш или использовать режим инкогнито.

Каждая из этих причин может быть диагностирована с помощью различных инструментов и команд, что позволит быстро выявить источник проблемы.

Как исправить ошибку ERR_EMPTY_RESPONSE

Исправление ошибки ERR_EMPTY_RESPONSE требует систематического подхода. Вот несколько шагов, которые можно предпринять для устранения проблемы:

  1. Проверка доступности сервера: Используйте команду curl -I http://yourdomain.com. Если вы не получаете ответа, это может указывать на проблему с сервером или сетью.
  2. Перезагрузка сервера: Если сервер перегружен, попробуйте его перезагрузить. Для этого используйте команду sudo systemctl restart apache2 или sudo systemctl restart nginx в зависимости от используемого веб-сервера.
  3. Проверка логов сервера: Логи ошибок могут дать подсказки о том, что пошло не так. Для Apache проверьте /var/log/apache2/error.log, а для Nginx — /var/log/nginx/error.log.
  4. Тестирование конфигурации: Убедитесь, что конфигурационные файлы сервера корректны. Для Apache выполните apachectl configtest, для Nginx — nginx -t.
  5. Отключение расширений и кеша браузера: Попробуйте отключить все расширения и очистить кеш. Это поможет исключить проблемы на стороне клиента.

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

Пример диагностики проблемы с ERR_EMPTY_RESPONSE

Рассмотрим пример диагностики ошибки ERR_EMPTY_RESPONSE на сервере, работающем под управлением Nginx. Предположим, что вы получили эту ошибку при попытке доступа к вашему сайту.

1. Сначала проверьте доступность сервера с помощью команды:

curl -I http://yourdomain.com

Если вы не получаете ответа, это может указывать на то, что сервер недоступен. В таком случае выполните следующие шаги:

2. Перезагрузите сервер:

sudo systemctl restart nginx

3. Проверьте логи ошибок:

tail -f /var/log/nginx/error.log

Ищите сообщения об ошибках, которые могут указывать на причину проблемы.

4. Проверьте конфигурацию:

nginx -t

Если конфигурация правильная, вы увидите сообщение successful. Если есть ошибки, исправьте их и перезапустите Nginx.

5. Если проблема сохраняется, проверьте настройки брандмауэра:

sudo ufw status

Убедитесь, что порты 80 и 443 открыты. Если нет, добавьте их с помощью:

sudo ufw allow 80/tcpsudo ufw allow 443/tcp

Следуя этим шагам, вы сможете диагностировать и исправить ошибку ERR_EMPTY_RESPONSE на вашем сервере.

Больше по теме

Часто задаваемые вопросы

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

Refused — TCP connect не удался (сервер не слушает). Empty — соединение есть, но ответ пуст. Причина глубже: worker упал после accept().

Возникает только на POST-запросах — почему?

Большие POST-body превышают client_max_body_size nginx или post_max_size PHP. PHP-FPM отклоняет, nginx рвёт соединение → empty response.

Как поймать точный момент падения?

Включите nginx access_log с $upstream_response_time и $upstream_status. Пустой upstream_status + время = вот момент.

Помогает ли перезапуск?

Временно да, но проблема вернётся. Найдите root cause через логи.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.