Ошибка 502 (Bad Gateway) означает, что сервер получил недопустимый или некорректный ответ от другого сервера при обработке запроса.
На хостинге за этим стоит связка Nginx и Apache: Nginx принимает запрос и передает его Apache, а если тот отвечает некорректно или не отвечает совсем, появляется 502.
Как и в случае с другими ошибками, для диагностики полезно использовать логирование. Подробнее — в инструкции по включению логов ошибок Apache.
Возможные причины ошибки 502:
- Скрипты сайта превышают ограничения хостинга
- Ошибка сегментации (segfault)
- Исчерпаны обработчики Apache
- Технический сбой на сервере
Скрипты сайта превышают ограничения хостинга
Ошибка может возникнуть, если скрипты сайта выходят за пределы ресурсов тарифа. Это может быть превышение по памяти, времени выполнения или другим параметрам 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 возникает из-за технических сбоев. Мы отслеживаем такие случаи и оперативно устраняем их.
Если проблема не исчезает в течение разумного времени — обратитесь в поддержку. Мы проверим сервер и подскажем, что вызывало ошибку.