Что означает HTTP статус-код 502 Bad Gateway?

«Что означает HTTP статус-код 502 Bad Gateway?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP 502 Bad Gateway — код состояния, указывающий, что сервер, действуя как шлюз или прокси, получил недопустимый ответ от вышестоящего сервера.

Типичные причины:

  1. Бэкенд-сервер недоступен (упал, не запущен).
  2. Таймаут соединения с бэкендом.
  3. Некорректная конфигурация прокси/шлюза.
  4. Перегрузка бэкенд-сервера.

Архитектурный пример:

Клиент → [Прокси-сервер (Nginx)] → [Бэкенд-сервер (App)]
                    |                        |
               Возвращает 502           Не отвечает/отдаёт ошибку

Действия при диагностике:

  • Проверить статус бэкенд-сервиса: systemctl status my-backend-service
  • Изучить логи прокси-сервера (Nginx):
    tail -f /var/log/nginx/error.log
    # Типичная ошибка:
    # upstream timed out (110: Connection timed out) while connecting to upstream
  • Проверить доступность бэкенда вручную:
    curl -v http://backend-host:8080/health
  • Увеличить таймауты в конфиге Nginx (временное решение):
    location /api/ {
        proxy_pass http://backend;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
    }