Proxy otrzymało nieprawidłową odpowiedź od serwera, który za nim stoi.
Kiedy go używać
Aplikacja za nginx lub load balancerem uległa awarii albo zwróciła śmieci.
Typowe przyczyny i rozwiązania
Proxy, takie jak nginx, load balancer czy Cloudflare, nie dostało poprawnej odpowiedzi od aplikacji, która za nim stoi. Typowe przyczyny: aplikacja uległa awarii lub nie działa, nasłuchuje na innym porcie lub adresie, niż oczekuje proxy (127.0.0.1 zamiast 0.0.0.0 w Dockerze), zła ścieżka lub uprawnienia gniazda PHP-FPM albo zbyt duże nagłówki odpowiedzi. Log błędów nginx pokazuje wtedy „connection refused” lub „upstream prematurely closed connection”.
Sporadyczne 502 za AWS ALB to często wyścigi keep-alive: aplikacja zamyka bezczynne połączenia wcześniej niż balancer, więc ustaw w aplikacji limit keep-alive powyżej 60-sekundowego idle timeoutu ALB, np. server.keepAliveTimeout = 65000 w Node.js. Strona błędu Cloudflare pokazuje, czy zawiodła przeglądarka, Cloudflare czy Twój host. Sprawdź też pętle restartów po awariach w systemd lub Kubernetes oraz procesy zabite przez OOM w dmesg.
Błąd serwera (5xx)
Kody 5xx to błędy serwera: żądanie może być poprawne, ale zawiódł serwer lub coś za nim. Warto ustawić na nie alerty.
Jak to wygląda
HTTP/1.1 502 Bad GatewayJak go wysłać
| Node.js / Express | res.status(502).end() |
|---|---|
| Python / Flask | return '', 502 |
| nginx | return 502; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/