Содержание
- Что означает ошибка 502 Bad Gateway на самом деле
- Экспресс-реанимация сервера: 4 команды для терминала
- Причина №1: Упал или завис пул процессов PHP-FPM
- Причина №2: Переполнение диска сервером логов
- Причина №3: Тайм-ауты и буферы Nginx (proxy_timeout)
- Особенности 502 ошибки на 1С-Битрикс и WordPress
- Как исключить ошибку 502 навсегда: автопилот Novacom за 990 ₽/мес
По статистике Яндекс Вордстат, запрос «502 bad gateway» и «ошибка 502» вводят в поиск более 50 000 раз в месяц (из них свыше 13 700 раз — строго в точной формулировке в момент аварии).
Если на вашем сайте прямо сейчас горит белая страница с надписью «502 Bad Gateway nginx», это означает, что входящий веб-сервер (Nginx) работает штатно, но не может получить валидный ответ от внутреннего бэкенда (PHP-FPM, Apache, Node.js или базы данных MySQL).
В этом экспресс-руководстве мы разберем готовый чек-лист команд, которые поднимут сайт за 2 минуты.
Что означает ошибка 502 Bad Gateway на самом деле
Архитектура 95% современных сайтов устроена по двухзвенной схеме:
- Фронтенд-прокси (Nginx): Принимает входящие запросы от браузеров, держит SSL-сертификат, сжимает статику (картинки, CSS, JS).
- Апстрим (Upstream / Бэкенд): PHP-FPM или Gunicorn, который выполняет скрипты CMS (1С-Битрикс, WordPress) и делает запросы к БД.
Браузер клиента ──(HTTPS)──> [ Nginx ] ──(Unix Socket / FastCGI)──> [ PHP-FPM ] ──> [ MySQL / PostgreSQL ]
│ │
└─── ❌ Ошибка 502 Bad Gateway ─────────┘
(Nginx не дождался ответа или сокет закрыт)
Ошибка 502 возникает в двух случаях:
- Служба PHP-FPM упала (или была убита OOM-killer из-за нехватки оперативной памяти) — сокет недоступен.
- Скрипт выполнялся слишком долго (тяжелая выгрузка каталога 1С, экспорт товаров) и превысил допустимый тайм-аут ожидания в Nginx.
Экспресс-реанимация сервера: 4 команды для терминала
Если у вас есть SSH-доступ к серверу (Ubuntu/Debian), выполните эти 4 команды по очереди:
1. Проверяем статус и перезапускаем службу PHP
# Определяем работающую версию PHP и перезапускаем FPM
sudo systemctl restart php*-fpm || sudo service php8.2-fpm restart || sudo service php8.1-fpm restart || sudo service php7.4-fpm restart
# Для серверов с панелью BitrixVM:
sudo systemctl restart httpd || sudo systemctl restart apache2
2. Проверяем свободное место на диске
df -h /
Внимание: Если в колонке
Use%стоит 100%, сервер не может создать сокет-файл сессии и отдает 502. Немедленно очистите логи:sudo journalctl --vacuum-size=100M && sudo truncate -s 0 /var/log/nginx/*error.log.
3. Проверяем статус базы данных MySQL / MariaDB
sudo systemctl status mysql || sudo systemctl status mariadb
# Если служба Inactive/Failed:
sudo systemctl restart mysql
4. Перезагружаем Nginx с проверкой конфигурации
sudo nginx -t && sudo systemctl reload nginx
В 75% случаев этих четырех действий достаточно, чтобы сайт мгновенно ожил.
Причина №1: Упал или завис пул процессов PHP-FPM
Наиболее частая причина 502 ошибки под нагрузкой — исчерпание лимита процессов PHP.
Когда на сайт заходит рекламный трафик, каждый посетитель занимает один рабочий процесс PHP. Если в файле конфигурации пула установлено слишком маленькое значение pm.max_children, входящие запросы выстраиваются в очередь. Когда очередь переполняется, Nginx разрывает соединение с ошибкой 502.
Как исправить:
Откройте файл конфигурации пула (например, /etc/php/8.2/fpm/pool.d/www.conf):
[www]
pm = dynamic
; Увеличьте количество дочерних процессов в зависимости от объема RAM сервера
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
; Принудительный перезапуск процесса после 500 запросов (защита от утечек памяти)
pm.max_requests = 500
После правки перезапустите PHP: sudo systemctl restart php8.2-fpm.
Причина №2: Переполнение диска сервером логов
Когда на диске заканчивается место (0 байт свободно), операционная система блокирует создание временных файлов /tmp и Unix-сокетов /run/php/php-fpm.sock. В результате Nginx пишет в error.log:
connect() to unix:/var/run/php/php8.2-fpm.sock failed (2: No such file or directory) while connecting to upstream
Быстрая очистка:
# Удалить старые системные архивы логов
sudo rm -rf /var/log/*.gz /var/log/*.[0-9]
# Очистить временную директорию
sudo rm -rf /tmp/*
# Проверить, освободилось ли место
df -h /
Причина №3: Тайм-ауты и буферы Nginx (proxy_timeout)
Если 502 ошибка возникает только при определенных действиях (например, фильтрация в каталоге, экспорт в Excel или сохранение заказа в админке), скрипт упирается в лимиты времени ожидания FastCGI.
В файле /etc/nginx/nginx.conf или блоке location ~ \.php$ вашего сайта добавьте:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Увеличение тайм-аутов для тяжелых скриптов (в секундах)
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
# Увеличение буферов FastCGI
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
Проверьте синтаксис sudo nginx -t и примените: sudo systemctl reload nginx.
Особенности 502 ошибки на 1С-Битрикс и WordPress
1С-Битрикс (BitrixVM)
На виртуальной машине BitrixVM связка работает через Apache на бэкенде: Nginx (порт 80/443) -> Apache httpd (порт 8080).
Если вы видите 502 на Битриксе:
- Чаще всего завис Apache:
systemctl restart httpd. - Зависла сессия в таблице
b_security_session: проверьте свободное место в MySQL. - Ошибка соединения с Redis/Memcached (если включено кеширование в памяти): перезапустите сервис
systemctl restart redis.
WordPress (WooCommerce)
На WordPress 502 ошибку часто провоцирует конфликт обновлений плагинов. Если сайт упал после нажатия «Обновить плагин»:
- Перейдите в консоли в папку плагинов:
cd /var/www/site.ru/wp-content/. - Временно переименуйте папку:
mv plugins plugins_old. - Если сайт заработал — возвращайте плагины по одному, чтобы локализовать проблемный.
Как исключить ошибку 502 навсегда: автопилот Novacom за 990 ₽/мес
Аварии на сайтах обычно происходят в самое неподходящее время: в пятницу вечером, на выходных или во время запуска рекламы, когда живые программисты недоступны.
Автономный ИИ-вебмастер Novacom берет сайт на круглосуточную страховку:
- Мониторинг 24/7 каждые 60 секунд: Агент постоянно замеряет код ответа. При появлении ошибки 502 или падении ответа время реакции составляет 12 секунд.
- Автоматическая реанимация служб: Агент автоматически подключается к серверу, очищает забитый логами диск, перезапускает пул PHP-FPM и восстанавливает работу сайта без вашего участия.
- Отчет в Telegram: Через 15 секунд после инцидента вы получаете уведомление: «Сайт восстановил работу. Причина: зависание пула PHP-FPM устранена».
Проверьте здоровье вашего сайта прямо сейчас:
На главной странице novacom.ru доступен бесплатный экспресс-сканер: введите домен и узнайте текущее состояние SSL, кодов ответов сервера и скрытых технических ошибок.