Ошибка 502

Ошибка 502

Ошибка 502 (Bad Gateway) означает, что сервер получил недопустимый или некорректный ответ от другого сервера при обработке запроса.

На хостинге за этим стоит связка Nginx и Apache: Nginx принимает запрос и передает его Apache, а если тот отвечает некорректно или не отвечает совсем, появляется 502.

Как и в случае с другими ошибками, для диагностики полезно использовать логирование. Подробнее — в инструкции по включению логов ошибок Apache.

Возможные причины ошибки 502:

Скрипты сайта превышают ограничения хостинга

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

Способы решения:

  • Перейти на более мощный тариф, если ресурсы действительно ограничивают работу сайта.
  • Изучить документацию CMS или плагинов, чтобы понять, какие параметры PHP необходимы для корректной работы.

Ошибка сегментации (segfault)

Segfault (segmentation fault) — это критическая ошибка при выполнении кода, когда процесс обращается к недопустимой области памяти. Это может быть вызвано ошибками в самом скрипте или в стороннем расширении.

Чтобы определить, в этом ли причина, попробуйте запустить скрипт вручную через SSH. Если вы получите такую ошибку:

/opt/php74/bin/php index.php  
Segmentation fault

— обратитесь к разработчику скрипта для диагностики и исправления ошибки.

Если вы используете PHP версии 5.3 или 5.4 с включенным расширением APC (Alternative PHP Cache), это тоже может вызывать ошибку segfault.

Для решения отключите APC, добавив в файл .htaccess следующую строку:

php_flag apc.cache_by_default Off

Исчерпаны обработчики Apache

Эта проблема актуальна только для тарифов Eterno и Premium, где используются выделенные обработчики PHP. Для них действует ограничение:

  • до 6 обработчиков для основной версии PHP,
  • до 3 обработчиков для всех остальных версий.

Если скрипты выполняются слишком долго, все обработчики оказываются заняты. В результате Nginx не сможет передать запрос Apache, что и приводит к ошибке 502. Если за 1000 секунд (значение max_execution_time) ответа не поступит, возникнет ошибка.

Для временного решения можно завершить все процессы Apache командой:

killall -9 apache2

Если проблема повторяется — обратитесь к разработчику сайта. Возможны причины:

  • зависающие скрипты сайта,
  • медленные SQL-запросы,
  • проблемы в логике работы CMS или плагина.

Технический сбой на сервере

Иногда ошибка 502 возникает из-за технических сбоев. Мы отслеживаем такие случаи и оперативно устраняем их.

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