PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Решение проблем 502 Bad Gateway и 504 Gateway Timeout на Linux-сервере

Yazdır

Решение проблем 502 Bad Gateway и 504 Gateway Timeout на Linux-сервере

Пошаговое руководство по решению проблем Nginx, Apache, PHP-FPM и тайм-аута службы.

видел на сайтах 502 Неверный шлюз И 504 Тайм-аут шлюза ошибки обычно возникают из-за того, что веб-сервер не получает правильный ответ от внутренней службы. Этой службой может быть PHP-FPM, серверная часть Apache, приложение Node.js, служба API игровой панели или другое приложение, работающее через прокси.

Эти ошибки особенно распространены на хостинге, игровой панели, WHMCS, Pterodactyl, пользовательской панели администрирования и веб-системах запуска.

Простое объяснение: Nginx — это как сторож у двери. Если PHP или приложение внутри не отвечает, пользователю будет показано сообщение об ошибке 502 или 504.

1. Разница между ошибками 502 и 504

  • 502 Неверный шлюз: Веб-сервер не может подключиться к серверной службе или получает искаженный ответ.
  • 504 Тайм-аут шлюза: Кажется, что серверная служба отвечает, но ответ не возвращается вовремя.

Таким образом, 502 — это скорее сбой соединения/службы, а 504 — это проблема медленности или тайм-аута.

2. Проверка статусов услуг

Сначала проверьте, работают ли веб-сервер и службы PHP.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

В системах CentOS, AlmaLinux или Rocky Linux служба PHP-FPM может называться:

systemctl status php-fpm
systemctl status httpd

Если служба остановлена, перезапустите ее:

systemctl restart nginx
systemctl restart php-fpm

3. Просмотр файлов журналов

Неправильно гадать об ошибках 502 и 504. Файл журнала показывает реальную причину ошибки.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

В системах на базе CentOS:

tail -n 100 /var/log/httpd/error_log

В журналах можно увидеть следующие утверждения:

  • подключить() не удалось: Невозможно подключиться к серверной службе.
  • время ожидания восходящего потока истекло: Серверная служба отвечает с опозданием.
  • В соединении отказано: Служба не работает или происходит переадресация на неверный порт.
  • доступ запрещен: Возникла проблема с сокетом или правами доступа к файлу.

4. Сокет PHP-FPM или управление портом

Nginx подключается к PHP-FPM через сокет или порт. Путь PHP-FPM в файле конфигурации Nginx и фактическое значение прослушивания PHP-FPM должны совпадать.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

Например, если Nginx использует:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Тот же сокет должен прослушиваться на стороне PHP-FPM:

listen = /run/php/php8.2-fpm.sock
Важный: Если версия PHP изменилась, Nginx, возможно, все еще ищет старый путь к сокету PHP-FPM. Это одна из наиболее частых причин ошибки 502.

5. Увеличение настроек таймаута

Ошибки 504 могут быть получены в больших панелях обработки, игровых рынках, API или медленно работающих PHP-скриптах. Значения таймаута Nginx можно увеличить.

nano /etc/nginx/nginx.conf

В блок http или соответствующий блок сервера можно добавить следующие значения:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

Проверьте настройки и перезапустите Nginx:

nginx -t
systemctl restart nginx

6. Проверка ограничений процесса PHP-FPM

При увеличении трафика лимиты транзакций PHP-FPM могут оказаться недостаточными. В этом случае запросы ставятся в очередь и происходит таймаут.

nano /etc/php/8.2/fpm/pool.d/www.conf

Пример настроек:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

Эти значения должны быть скорректированы в зависимости от объема оперативной памяти сервера. Установка слишком высокого значения увеличивает потребление оперативной памяти.

Распространенные ошибки

  • Изменение настроек без просмотра файла журнала
  • Не обновлять путь к сокету Nginx, даже если версия PHP изменилась.
  • Не исправлять фактический медленный запрос путем увеличения тайм-аута
  • Увеличение лимитов PHP-FPM без расчета оперативной памяти
  • Перезапуск службы без проверки конфигурации Nginx

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

Всегда ли ошибка 502 вызвана Nginx?
Нет. Ошибка показывает только Nginx. Настоящая проблема может быть в PHP-FPM, серверной части Apache, приложении Node.js или другом сервисе.

Является ли увеличение тайм-аута окончательным решением проблемы 504 ошибок?
Не всегда. Увеличение тайм-аута дает временное облегчение. Реальное решение — найти проблемы с медленным запросом, тяжелой обработкой или производительностью.

Безопасно ли перезапустить PHP-FPM?
В целом это безопасно, но активные запросы могут быть затронуты на короткое время. В загруженных системах следует отдавать предпочтение часам с низким трафиком.

Рекомендации по производительности

  • Регулярно проверяйте версию PHP-FPM и путь к сокету.
  • Изучите журналы медленных запросов в веб-панели и службах API.
  • Если оперативной памяти недостаточно, не увеличивайте значение PHP-FPM max_children неосознанно.
  • Уменьшите нагрузку на серверную часть с помощью системы кэширования.
  • Управляйте журналами ошибок до того, как они разрастутся, с помощью logrotate.

Эта статья специально подготовлена ​​для PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner