Перейти к содержимому

Ошибка 502 Bad Gateway

Облачные серверы2 мин чтения

Что значит 502 Bad Gateway, что делать посетителю и как владельцу сайта найти причину: на хостинге с cPanel и на своём сервере с nginx и PHP-FPM.

Содержание

502 Bad Gateway значит, что сервер, к которому обратился браузер, сам не получил ответа от следующего звена. Обычно перед сайтом стоит nginx, а сам сайт работает в PHP-FPM, приложении на Node.js или Python, в контейнере Docker. Если это приложение упало, перегружено или недоступно, nginx отвечает посетителю ошибкой 502.

Если вы посетитель

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

На нашем хостинге

Откройте в cPanel раздел Errors — там последние ошибки сайта. Частые причины 502 на хостинге:

  • скрипт работает слишком долго — тяжёлый импорт, отчёт, плагин резервного копирования;
  • сайт не справляется с нагрузкой — ошибки появляются при наплыве посетителей или роботов: Сайт тормозит от наплыва запросов;
  • ошибка в PHP после обновления CMS или плагина.

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

На своём сервере

Главная подсказка — в журнале ошибок nginx:

sudo tail -n 30 /var/log/nginx/error.log
Строка в журналеПричина
connect() to unix:/run/php/php8.4-fpm.sock failed (2: No such file or directory)PHP-FPM не запущен или в настройках nginx не тот путь к сокету
connect() … (13: Permission denied)у nginx нет прав на сокет PHP-FPM — проверьте listen.owner и listen.group в настройках пула
connect() failed (111: Connection refused) while connecting to upstreamприложение на этом порту не запущено — например, контейнер Docker остановлен
upstream prematurely closed connectionприложение упало посреди ответа — смотрите его собственный журнал

Проверьте, работает ли то, к чему обращается nginx:

systemctl status php8.4-fpm      # имя службы — по вашей версии PHP
sudo journalctl -u php8.4-fpm -n 50
sudo ss -ltnp                     # слушает ли приложение свой порт

Если PHP-FPM или приложение периодически исчезают сами — проверьте, не завершает ли их система из-за нехватки памяти: OOM killer. Как читать журналы служб — Журналы: journalctl и /var/log.

502 и 504 — в чём разница

502 — приложение ответило ошибкой или не ответило вовсе. 504 Gateway Timeout — приложение не успело ответить за отведённое время: nginx ждал и сдался. При 504 ищите медленные запросы к базе и долгие скрипты; время ожидания в nginx задают proxy_read_timeout и fastcgi_read_timeout.

Не нашли ответ? Напишите в поддержку — подскажем.