Ошибка 502 Bad Gateway: что значит и как исправить

Ключевой вывод

Ошибка 502 Bad Gateway означает, что сервер, до которого вы дошли, — шлюз или прокси (nginx, Cloudflare, балансировщик нагрузки), и он получил неверный ответ от сервера приложения за ним. Посетителю стоит подождать минуту, обновить страницу и проверить, не лежит ли сайт у всех. Владельцу сайта лог ошибок nginx обычно показывает одной строкой, что именно произошло: приложение не запущено, proxy_pass указывает не на тот порт или сокет, приложение упало посреди запроса или заголовки ответа не поместились в буфер прокси.

Проверьте сейчас

Страница ошибки 502 Bad Gateway от nginx рядом с пятью проверками, которые устраняют большинство ошибок 502
Страница ошибки 502 Bad Gateway от nginx рядом с пятью проверками, которые устраняют большинство ошибок 502
Начать чтение
  1. Что такое ошибка 502 Bad Gateway?
  2. Как может выглядеть ошибка 502
  3. Ошибки 502, 500, 503 и 504: в чём разница?
  4. Причины ошибки 502 Bad Gateway
  5. Как исправить ошибку 502, если вы посетитель
  6. Как исправить 502 Bad Gateway на своём сервере
  7. 1. Прочитайте лог ошибок прокси
  8. 2. Убедитесь, что upstream-приложение запущено
  9. 3. Проверьте, что proxy_pass указывает на правильный порт или сокет
  10. 4. Реальный пример: как dnsrobot.net отдавал ошибку 502
  11. Node.js за балансировщиком нагрузки: случайные ошибки 502
  12. 502 Bad Gateway в Cloudflare
  13. Вредит ли ошибка 502 SEO?
  14. Часто задаваемые вопросы

Что такое ошибка 502 Bad Gateway?

502 Bad Gateway — это код состояния HTTP, который означает, что отвечающий вам сервер работает как шлюз или прокси и получил неверный ответ от сервера за ним. Стандарт HTTP (RFC 9110, раздел 15.6.3) определяет его именно так: сервер, «действуя как шлюз или прокси, получил неверный ответ от входящего сервера, к которому обратился, пытаясь выполнить запрос».

У большинства современных сайтов минимум два уровня. Фронтовой сервер — nginx, Apache, Cloudflare или облачный балансировщик нагрузки — принимает ваше соединение и передаёт запрос вышестоящему (upstream) приложению: PHP-FPM, приложению на Node.js, Gunicorn на Python или контейнеру. Когда этот upstream не работает, падает или отвечает чем-то, что прокси не может использовать, прокси нечего вам отдать, и он возвращает 502.

Главное: сам шлюз работает. Он получил ваш запрос и ответил. Неисправность находится на шаг дальше.

502 у всех или только у вас? Проверьте

Как может выглядеть ошибка 502

Код состояния везде одинаковый, но страница, которую вы видите, зависит от того, какой прокси её сгенерировал:

Откуда приходитЧто написано на странице
nginx502 Bad Gateway, а под ним nginx (иногда с номером версии)
Apache (mod_proxy)Proxy Error. The proxy server received an invalid response from an upstream server.
Cloudflare (сбой на вашем origin)Error 502 Bad gateway, с блоками статуса Browser / Cloudflare / Host
Cloudflare (собственная ошибка)Простая страница с надписью 502 Bad Gateway, а под ней «cloudflare»
Microsoft IIS (ARR / ASP.NET Core)HTTP Error 502.3 - Bad Gateway или HTTP Error 502.5 - Process Failure
Сервисы Google502. That's an error. The server encountered a temporary error…
Браузеры и приложенияHTTP Error 502, 502 Proxy Error, Bad Gateway: The proxy server received an invalid response

Какой бы вариант вы ни видели, название прокси внизу страницы — полезная подсказка: оно говорит владельцу сайта, какой уровень нужно проверять.

Ошибки 502, 500, 503 и 504: в чём разница?

Все коды 5xx означают «проблема на сервере», но каждый указывает на свой уровень:

КодНазваниеЧто означаетТипичная причина
500Internal Server ErrorСамо приложение упало при обработке запросаБаг в коде, фатальная ошибка PHP, неверная конфигурация
502Bad GatewayПрокси получил от upstream неверный ответ или ответ, который не может использоватьПриложение не работает или упало, не тот порт или сокет, слишком большие заголовки
503Service UnavailableСервер временно не может обрабатывать запросыПерегрузка, режим обслуживания, лимиты запросов
504Gateway TimeoutПрокси ждал ответа от upstream и сдалсяМедленный запрос к базе данных, долгий скрипт, слишком маленький таймаут

Простое правило: 502 = upstream отказал в соединении, повесил трубку или дал плохой ответ, 504 = upstream не ответил вовремя. Соседние ошибки подробно разобраны в наших руководствах: 500 Internal Server Error, 503 Service Unavailable и 504 Gateway Timeout.

Причины ошибки 502 Bad Gateway

  • Upstream-приложение не запущено. PHP-FPM, Node, Gunicorn или контейнер упали, не запустились после деплоя или перезапускаются.
  • Прокси указывает не туда. В proxy_pass или fastcgi_pass указан не тот порт, старый путь к сокету PHP после обновления или localhost внутри Docker-контейнера.
  • Приложение падает на некоторых запросах. Одна страница вызывает завершение процесса из-за нехватки памяти или необработанное исключение, и соединение закрывается до ответа.
  • Все воркеры заняты. PHP-FPM упёрся в pm.max_children, и новые запросы ждут в очереди сокета. Большинство из них заканчивается ошибкой 504 по таймауту; когда очередь заполняется, nginx пишет в лог (11: Resource temporarily unavailable) и возвращает 502.
  • Заголовки ответа слишком большие. Крупные cookie или объёмные заголовки безопасности переполняют proxy_buffer_size в nginx.
  • Несовпадение keep-alive за балансировщиком. Приложение закрывает простаивающие соединения раньше, чем ожидает балансировщик, и тот отправляет запрос в закрывающееся соединение.
  • Прокси не может достучаться до upstream после изменений в сети. Файрвол, который отклоняет прокси, или upstream, переехавший на другой IP, дают 502 (Connection refused, No route to host). Файрвол, молча отбрасывающий пакеты, даёт 504, а за Cloudflare это выглядит как 521 или 522.

Как исправить ошибку 502, если вы посетитель

Починить чужой сервер вы не можете, но эти шаги подтвердят, что проблема действительно на его стороне, и устранят редкие локальные причины:

  • Подождите 30–60 секунд и обновите страницу (Ctrl + R, на Mac — Cmd + R). Многие ошибки 502 длятся ровно столько, сколько идёт деплой или перезапуск.
  • Проверьте, не лежит ли сайт у всех. Проверка доступности сайта от DNS Robot открывает страницу из 11 точек, а Проверка HTTP-заголовков показывает точный код состояния, который получает наш сервер. Если они тоже видят 502, проблема в сайте, а не у вас.
  • Сделайте жёсткую перезагрузку — Ctrl + Shift + R (на Mac — Cmd + Shift + R) — на случай, если вам показывают закешированную страницу ошибки.
  • Очистите DNS-кеш, если сайт недавно сменил хостинг, — так вы попадёте на новый сервер. Вот как очистить DNS-кеш в любой системе.
  • Выключите VPN и прокси. Неисправным «шлюзом» может оказаться ваш собственный прокси, особенно в рабочих сетях.
  • Попробуйте другой браузер или телефон через мобильный интернет. Если там всё работает, удалите cookie этого сайта.

Как исправить 502 Bad Gateway на своём сервере

На стороне сервера 502 — одна из самых простых в исправлении ошибок, потому что прокси обычно записывает, что пошло не так (исключения — гонка keep-alive у балансировщика и собственные ошибки 502 у Cloudflare). Пройдите эти три проверки по порядку; четвёртая часть — реальный пример.

1. Прочитайте лог ошибок прокси

Воспроизведите ошибку 502 и прочитайте последние 50 строк лога ошибок прокси (команды — под таблицей). Каждое из этих сообщений nginx указывает на своё решение:

Сообщение в логеЧто оно означает
connect() failed (111: Connection refused) while connecting to upstreamНа порту upstream никто не слушает: приложение не работает или запущено на другом порту
connect() to unix:/run/php/php8.x-fpm.sock failed (2: No such file or directory)Сокета PHP-FPM не существует — обычно после смены версии PHP
connect() to unix:… failed (13: Permission denied)У nginx нет доступа к сокету: исправьте listen.owner / listen.group
connect() to unix:… failed (11: Resource temporarily unavailable)Очередь сокета PHP-FPM заполнена: все воркеры заняты (pm.max_children)
upstream prematurely closed connection while reading response headerПриложение упало или закрыло соединение посреди запроса
upstream sent too big header while reading response header from upstreamЗаголовки ответа больше, чем proxy_buffer_size (для PHP-FPM — fastcgi_buffer_size)
no live upstreams while connecting to upstreamВсе серверы в блоке upstream помечены как нерабочие
bash
# nginx
sudo tail -n 50 /var/log/nginx/error.log

# Apache
sudo tail -n 50 /var/log/apache2/error.log    # Debian/Ubuntu
sudo tail -n 50 /var/log/httpd/error_log      # RHEL/Alma/Rocky

2. Убедитесь, что upstream-приложение запущено

bash
# PHP-FPM (подставьте свою версию)
sudo systemctl status php8.3-fpm
sudo journalctl -u php8.3-fpm -n 50

# Node.js под PM2
pm2 status
pm2 logs --lines 50

# Docker
docker ps -a          # ищите контейнеры, которые постоянно перезапускаются
docker logs --tail 50 <container>

# Не был ли процесс убит за превышение памяти?
sudo dmesg -T | grep -i "killed process"

Если сервис остановлен, запустите его и выясните, почему он остановился: неудачный деплой, синтаксическая ошибка в новом релизе или OOM killer (завершение процессов при нехватке памяти). Строка server reached pm.max_children setting в логе PHP-FPM означает, что все воркеры были заняты. Увеличивайте pm.max_children только если серверу хватает RAM, иначе найдите медленные запросы, которые держат воркеры.

3. Проверьте, что proxy_pass указывает на правильный порт или сокет

Сравните, с чем nginx должен общаться, с тем, что на самом деле слушает:

bash
# Куда nginx проксирует запросы?
sudo nginx -T 2>/dev/null | grep -n "proxy_pass\|fastcgi_pass"

# Что на самом деле слушает?
sudo ss -tlnp            # TCP-порты и их процессы
ls -l /run/php/          # файлы сокетов PHP-FPM

Два классических несоответствия: после обновления PHP сокет становится php8.3-fpm.sock, а nginx всё ещё указывает на php8.1-fpm.sock; а внутри Docker proxy_pass http://localhost:3000 указывает на сам контейнер nginx, а не на приложение, — используйте имя сервиса из Compose (http://app:3000).

4. Реальный пример: как dnsrobot.net отдавал ошибку 502

Это случилось у нас 30 сентября 2026 года. После публикации пачки новых статей в блоге ровно одна из них возвращала 502 Bad Gateway через nginx 1.24, а все остальные страницы работали. Приложение Next.js за nginx отдавало ту же страницу с кодом 200 OK, когда мы запрашивали её напрямую на порту 3000. Значит, приложение было в порядке, а сбоил шлюз.

Ответ нашёлся в одной строке лога ошибок nginx: upstream sent too big header while reading response header from upstream. Заголовки ответа этой страницы занимали 4 087 байт — в основном длинный заголовок Content-Security-Policy и заголовки Link для preload. nginx читает первую часть ответа, включая все заголовки, в буфер, размер которого задаёт proxy_buffer_size, а по умолчанию он равен одной странице памяти: 4 КБ на нашем сервере. Свободного места оставалось всего 9 байт, и полный блок заголовков вместе со строкой статуса его переполнил.

Исправление — три строки в блоке location, который проксирует запросы к приложению; после nginx -t и перезагрузки конфигурации страница вернула 200:

nginx
location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_buffer_size 16k;        # место для больших заголовков (было 4k по умолчанию)
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
}

Вывод: если 502 отдают только некоторые страницы, а остальной сайт работает, ищите ограничение по размеру — например, большие заголовки или значения Set-Cookie на этих страницах, — прежде чем подозревать приложение.

Node.js за балансировщиком нагрузки: случайные ошибки 502

Если Node.js работает за AWS Application Load Balancer или похожим балансировщиком и вы видите редкие ошибки 502 без каких-либо ошибок в логах приложения, проверьте таймауты keep-alive. HTTP-сервер Node по умолчанию закрывает простаивающие keep-alive-соединения через 5 секунд в Node 26 и более ранних (server.keepAliveTimeout; в Node 24.6 и 22.19 добавили поверх этого keepAliveTimeoutBuffer в 1 секунду, а в следующей мажорной версии значение по умолчанию вырастет до 65 секунд), а AWS ALB держит простаивающие соединения открытыми 60 секунд. Иногда балансировщик повторно использует соединение ровно в тот момент, когда Node его закрывает, и этот запрос возвращается как 502.

Решение — сделать таймаут приложения длиннее, чем у балансировщика:

javascript
const server = app.listen(3000)
// Должен быть больше таймаута простоя балансировщика (ALB по умолчанию: 60 с)
server.keepAliveTimeout = 65_000
server.headersTimeout = 66_000 // нужно только до Node 18; позже не мешает

502 Bad Gateway в Cloudflare

Если сайт работает через Cloudflare, сначала посмотрите, кто сгенерировал страницу ошибки (руководство Cloudflare по 502/504):

  • Страница с брендингом Cloudflare (Browser ✓ / Cloudflare ✓ / Host ✗): ваш origin-сервер сам вернул Cloudflare ошибку 502 или 504. Исправляйте на origin по серверным шагам выше. Если Cloudflare вообще не может подключиться к origin, вы получите 521 или 522, а не 502.
  • Простая страница «502 Bad Gateway», под которой написано «cloudflare»: такую ошибку создаёт сам Cloudflare. В его документации названы две причины: origin отдаёт сломанный gzip-контент или gzip-контент без обновлённого Content-Length (для проверки отключите сжатие на origin) и внезапный всплеск трафика в одном дата-центре Cloudflare, который проходит сам.
  • Страница с упоминанием nginx или Apache: обычно запрос дошёл до вашего сервера мимо Cloudflare — DNS-запись без проксирования (серое облако, «DNS only») или вы открываете origin напрямую (если только Cache Rule не включает «Origin error page pass-through»).
  • Переехали на другой хостинг? Обновите A-запись origin в DNS Cloudflare (неверный IP origin обычно проявляется как 521, 522 или 523). DNS Lookup показывает origin только для записей с серым облаком (DNS only); проксируемые записи отвечают IP-адресами самого Cloudflare.

Вредит ли ошибка 502 SEO?

Короткий сбой — нет. В документации Google сказано, что серверные ошибки 5xx заставляют краулеры временно замедлить сканирование. Уже проиндексированные страницы поначалу остаются в индексе, но если ошибки не прекращаются, Google в итоге удаляет эти URL.

Поэтому ошибка 502, которая длится несколько минут во время деплоя, безвредна. А 502 на важных страницах, которая держится днями или неделями появляется время от времени, может сократить сканирование и стоить позиций. Следите за ключевыми URL и после любого сбоя проверяйте отчёт «Статистика сканирования» в Search Console.

Сайт возвращает 502 у всех?

Проверка HTTP-заголовков от DNS Robot запрашивает любой URL с наших серверов и показывает точный код состояния, серверное ПО и все заголовки ответа. Это самый быстрый способ подтвердить ошибку 502.

Источники

  1. RFC 9110 §15.6.3: 502 Bad Gateway, IETF
  2. ngx_http_proxy_module (proxy_buffer_size), nginx
  3. Error 502 bad gateway or error 504 gateway timeout, Cloudflare
  4. HTTP status codes and Google's crawlers, Google

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

Что означает 502 Bad Gateway?

Это значит, что сервер, до которого вы дошли, — шлюз или прокси, например nginx, Cloudflare или балансировщик нагрузки, и он получил неверный ответ от сервера приложения за ним. Прокси работает; приложение за ним не работает, упало, недоступно или отправило ответ, который прокси не смог использовать.

Ошибка 502 Bad Gateway — это моя вина?

Почти никогда. 502 — серверная ошибка. Обновите страницу через минуту и проверьте сервисом проверки доступности, не лежит ли сайт у всех. Локальные причины — это ваш собственный VPN или прокси, устаревшая DNS-запись после переезда сайта на другой хостинг и cookie этого сайта; другой браузер или мобильный интернет их исключают.

Сколько длится ошибка 502 Bad Gateway?

Фиксированного времени нет. Ошибка 502 из-за деплоя или перезапуска обычно проходит за секунды или несколько минут. Если она длится дольше, upstream-приложение упало или неправильно настроено и не заработает, пока владелец сайта это не исправит.

Что значит 502 Bad Gateway nginx?

Ответил прокси nginx, и он не смог получить корректный ответ от приложения, которому пересылает запросы, — например, PHP-FPM или приложения на Node.js. Точная причина записана в логе ошибок nginx, обычно /var/log/nginx/error.log.

Чем отличаются ошибки 502 и 504?

502 Bad Gateway означает, что прокси не смог подключиться к upstream-серверу либо upstream закрыл соединение или вернул неверный ответ. 504 Gateway Timeout означает, что upstream-сервер не ответил в пределах лимита времени прокси. 502 указывает на падение или ошибку конфигурации, 504 — на медленную работу.

Может ли VPN или прокси вызывать ошибку 502?

Да, если сбоящим шлюзом оказался ваш собственный VPN или корпоративный прокси. В этом случае ошибка появляется на всех сайтах или только при включённом VPN. Отключитесь и обновите страницу. Если ошибка 502 исчезла, проблема в вашем VPN или прокси, а не в сайте.

Как исправить 502 Bad Gateway в Cloudflare?

Посмотрите на страницу ошибки. Страница с брендингом Cloudflare, где Host отмечен как неработающий, означает, что ваш origin-сервер сам вернул 502, поэтому идите по серверным шагам: лог ошибок, запущено ли приложение, proxy_pass. Простая страница «502 Bad Gateway», под которой написано «cloudflare», создаётся самим Cloudflare: в его документации названы сломанный gzip от origin и кратковременные перераспределения трафика между дата-центрами.

Почему ошибка 502 только на одной странице моего сайта?

Если почти весь сайт работает, а одна страница возвращает 502, ищите, чем эта страница уникальна: заголовки ответа или значения Set-Cookie, переполняющие буфер прокси, либо участок кода, который роняет приложение или исчерпывает его память (очень медленный запрос даёт 504, а не 502). Лог ошибок прокси назовёт причину — например, upstream sent too big header.

Влияет ли ошибка 502 на SEO?

Короткие сбои с 502 — нет. Увидев ошибки 5xx, Google замедляет сканирование и какое-то время сохраняет проиндексированные страницы. Постоянные ошибки 502 на важных страницах могут привести к тому, что Google удалит эти URL из индекса, поэтому затяжные ошибки нужно исправлять быстро.

Об авторе

Shaik Vahid

Основатель DNS Robot. Вахид много лет работал в поддержке веб-хостинга: исправлял клиентам домены, DNS-записи, SSL-сертификаты и доставку почты. Он создаёт инструменты DNS Robot и пишет эти руководства по ошибкам, с которыми люди сталкиваются на самом деле.

Проверка HTTP-заголовков

Анализ HTTP заголовков ответа и оценка заголовков безопасности