502 Bad Gateway: Jak szybko naprawić błąd

502 Bad Gateway to komunikat, który potrafi zamrozić ruch, zburzyć zaufanie i w kilka minut kosztować realne pieniądze. Jeśli klienci widzą go na Twojej stronie lub w aplikacji, najważniejsze są dwie rzeczy: szybka reakcja i jasna komunikacja. Dobra wiadomość? Ten błąd da się zwykle opanować w ciągu kilkunastu minut, a z rozsądnymi praktykami – ograniczyć do minimum w przyszłości.

Czym właściwie jest 502 Bad Gateway i co oznacza dla biznesu

Błąd 502 to odpowiedź serwera pośredniczącego (reverse proxy, CDN lub bramka), który nie dostał prawidłowej odpowiedzi od serwera źródłowego (upstream). W praktyce oznacza to, że:

  • serwer aplikacyjny nie działa lub działa zbyt wolno,
  • odpowiedź została przerwana po drodze (np. przez błąd sieci, firewall, CDN),
  • konfiguracja jest niepoprawna (np. błędny DNS, certyfikat SSL, port, timeout).

Konsekwencje? Utrata przychodów, wzrost kosztów obsługi klienta, a czasem także utrata zaufania. Dlatego tak ważne jest, aby mieć gotowy, powtarzalny schemat działania.

Pierwsza pomoc, gdy pojawia się 502 Bad Gateway

Na początku liczy się spokój, prosty plan i odrobina empatii dla użytkowników. Oto sekwencja, która często działa w kilka minut:

  1. Szybka weryfikacja z zewnątrz
  • Sprawdź dostępność z innej sieci/urządzenia i przez tryb prywatny przeglądarki.
  • Zweryfikuj status przez usługę monitorującą lub narzędzia jak downforeveryoneorjustme. Jeśli 502 pojawia się globalnie – problem jest po stronie infrastruktury.
  1. Komunikat dla klientów
  • Dodaj krótki, widoczny banner/informację: „Chwilowe kłopoty techniczne. Pracujemy nad rozwiązaniem. Spróbuj ponownie za kilka minut.”
  • W kanałach społecznościowych/status page opublikuj aktualny status. Uspokaja to użytkowników i ogranicza napływ zgłoszeń.
  1. Błyskawiczne obejście
  • Jeśli masz CDN z cache (np. Cloudflare, CloudFront), włącz tryb „serve stale” lub tryb awaryjny, aby podawać wersje z pamięci podręcznej.
  • Przełącz ruch na zapasowy region/instancję (jeśli masz multi-AZ/HA).
  • W razie przeciążenia tymczasowo zredukuj ciężkie funkcje (np. generowanie raportów, eksporty), by odciążyć backend.
  1. Minimalna diagnostyka w 2–5 minut
  • Zobacz logi błędów reverse proxy (Nginx/HAProxy) i serwera aplikacyjnego – czy widać time-outy lub błędy 5xx upstream?
  • Sprawdź metryki: obciążenie CPU/RAM, czas odpowiedzi, liczbę połączeń. Często 502 idzie w parze z wyczerpaniem zasobów.

Jeśli to awaria krytyczna – skup się na przywróceniu działania, a dopiero potem na pełnej analizie.

Diagnostyka techniczna: najczęstsze przyczyny 502 Bad Gateway

Błąd 502 to „parasol” na różne sytuacje. Poniżej mapa najczęstszych źródeł problemów i tego, co sprawdzić w pierwszej kolejności.

Proxy i CDN (Cloudflare, CloudFront, Fastly)

  • Time-out do origin: CDN nie doczekał się odpowiedzi (typowe przy skokach ruchu lub długich zapytaniach).
    • Co zrobić: zwiększ timeouty po stronie CDN i reverse proxy, włącz kompresję i cache statyk, skróć czas tłustych zapytań.
  • Błędne reguły WAF/Firewall: blokują ruch do backendu.
    • Co zrobić: wyklucz błędnie dopasowane reguły, dodaj wyjątki dla kluczowych endpointów (np. API, webhooki).
  • Problem z TLS/SSL: niezgodność protokołu, wygasły certyfikat origin, zbyt restrykcyjna wersja TLS.
    • Co zrobić: odśwież certyfikaty, włącz kompatybilne wersje/protokół ALPN, sprawdź SNI.

Serwer aplikacyjny (Nginx/Apache + PHP-FPM, Node.js, Python/WSGI)

  • Zbyt mało workerów/połączeń: procesy są zajęte, kolejka rośnie, odpowiedzi nie wracają.
    • Co zrobić: zwiększ workers, max connections, podnieś limity systemowe (ulimit, nofile), rozważ autoscaling.
  • Długie lub zablokowane zapytania: blocking I/O, deadlocki, brak indeksów w bazie.
    • Co zrobić: profiluj najwolniejsze endpointy, dodaj indeksy, przenieś ciężkie zadania do kolejek (np. Celery, Sidekiq, SQS).
  • Błędy aplikacji (panic, segfault, OOM killer): procesy padają, upstream nie odpowiada.
    • Co zrobić: monitoruj OOM, ustaw restart polityki (systemd, PM2), przejrzyj core dump/logi, napraw regresję w kodzie.

Baza danych i usługi zależne

  • Przeciążona baza lub utrata połączeń (connection pool wyczerpany).
    • Co zrobić: skalowanie w pionie/poziomie, connection pooling, limity zapytań, retry z backoff.
  • Opóźnione odpowiedzi z zewnętrznych API (płatności, wysyłki).
    • Co zrobić: krótsze timeouty po stronie aplikacji, circuit breaker, cache odpowiedzi, mechanizmy „graceful degradation”.

DNS, SSL/TLS i sieć

  • Błędna konfiguracja DNS lub propagacja po zmianach.
    • Co zrobić: sprawdź rekordy A/AAAA/CNAME, TTL, wpisy w load balancerze, konsystencję w regionach.
  • Zdarzenia sieciowe: routing, ACL, security groups.
    • Co zrobić: przejrzyj reguły, porty, health-checki w LB (ELB/ALB/NLB), ensure reachable origin.

Komunikacja z klientami: minimalizuj frustrację

Problemy techniczne nie muszą równać się utracie wizerunku, jeśli dobrze poprowadzisz komunikację.

  • Przyznaj otwarcie, że wystąpił kłopot. Bez żargonu technicznego.
  • Podaj przybliżony czas rozwiązania (nawet jeśli to „pracujemy nad tym, prosimy o 10–15 minut”).
  • Zaproponuj obejście: aplikacja mobilna, inny kanał zamówień, kontakt na czacie.
  • Po wszystkim poinformuj, że sytuacja jest opanowana. Jeśli dotyczy to zamówień/płatności – potwierdź, które z nich są bezpieczne i co trzeba ewentualnie powtórzyć.

Klienci doceniają transparentność. Często to właśnie ona buduje zaufanie, gdy technologia zawodzi.

Działania prewencyjne, by 502 Bad Gateway nie wracał

Zapobieganie jest tańsze niż gaszenie pożarów. Poniżej praktyki, które realnie zmniejszają ryzyko.

Konfiguracja timeoutów i health-checków

  • Ustal spójne timeouty na każdym poziomie: aplikacja → reverse proxy → CDN.
  • Włącz health-checki w load balancerze i autoscalingu, aby chore instancje były automatycznie wyłączane z rotacji.
  • Zadbaj o politykę retry z backoff oraz „circuit breaker”, aby krótkie awarie usług nie zasypywały backendu lawiną prób.

Skalowanie i odporność

  • Stosuj horyzontalne skalowanie backendu (kilka instancji za load balancerem).
  • Cache’uj, co się da: wyniki zapytań, fragmenty widoków, treści publiczne. Krótsza droga do odpowiedzi to mniej 502.
  • Rozdziel zadania tła (kolejki) od warstwy web, żeby długie procesy nie blokowały żądań użytkowników.
  • Planuj limity i budżety zasobów: brak twardych limitów to przepis na przeciążenia.

Obserwowalność i alerty

  • Zbieraj metryki: czas odpowiedzi, błędy 5xx, saturację CPU/RAM, liczbę otwartych połączeń.
  • Logi skorelowane z trasą żądania (trace ID) pomogą znaleźć wąskie gardła.
  • Ustaw alerty progiem wyprzedzającym incydent: wzrost 5xx o X% w Y minut, rosnące time-outy upstream.
  • Testuj scenariusze chaos engineering w kontrolowanych warunkach, aby sprawdzić reakcję systemu na błędy.

Checklisty gotowe do użycia

Poniżej dwie praktyczne listy, które warto mieć pod ręką. Wydrukuj, dodaj do playbooka operacyjnego lub wklej do dokumentacji.

Szybka checklista na teraz (gdy właśnie widzisz 502 Bad Gateway)

  • Czy błąd występuje globalnie? Sprawdź z kilku lokalizacji i przez monitoring.
  • Czy jest komunikat dla użytkowników? Dodaj banner/status page.
  • CDN/LB: sprawdź health-checki, status origin, ewentualnie podnieś timeouty.
  • Reverse proxy: zobacz logi i liczbę połączeń, czy nie ma 504/499/502 chain.
  • Aplikacja: upewnij się, że procesy żyją; podnieś liczbę workerów lub zrestartuj bez przestojów (rolling restart).
  • Baza i usługi: metryki czasu odpowiedzi, connection pool, ewentualnie ogranicz ciężkie zadania.
  • Tymczasowe obejście: cache stale, wyłączenie funkcji o dużym koszcie, przełączenie regionu.

Checklista po incydencie (prewencja na przyszłość)

  • Analiza przyczyny źródłowej (RCA) – jedna strona, bez obwiniania, z faktami i timeline’em.
  • Korekty konfiguracji: timeouty, limity połączeń, health-checki, retry.
  • Plan wydajnościowy: profilowanie najwolniejszych endpointów, indeksy w DB, cache.
  • Observability: brakujące logi/metryki/tracing – uzupełnić teraz, nie przy następnym incydencie.
  • Testy: obciążeniowe dla krytycznych ścieżek (checkout, logowanie, API płatności).
  • Komunikacja: podsumowanie dla zespołów i – jeśli trzeba – dla klientów.

Scenariusze z życia: gdzie najczęściej potykamy się o 502

  • Skok ruchu po kampanii: backend nie nadąża, CDN nie ma świeżego cache. Rozwiązanie: preload cache kluczowych stron przed startem kampanii, autoscaling na zapas.
  • Długi raport generowany „w żądaniu”: po 60 sekundach proxy przerywa połączenie. Rozwiązanie: przenieść generowanie do kolejki i dostarczać wynik e-mailem lub przez link do pobrania.
  • Wygasły certyfikat na origin: CDN z TLS strict odmawia połączenia. Rozwiązanie: automatyzacja odnowień (np. ACME), alert 14 dni przed wygaśnięciem.
  • Aktualizacja aplikacji bez drain connections: część żądań trafia w pustkę. Rozwiązanie: rolling deployment, drain + health-checki przed włączeniem instancji do ruchu.

Praktyczne wskazówki dla zespołów nietechnicznych

  • Miej gotowy szablon komunikatu kryzysowego i listę kanałów publikacji.
  • Ustal jedną osobę odpowiedzialną za kontakt z klientem podczas incydentu.
  • Zbieraj zgłoszenia w jednym miejscu, aby nie dublować pracy wsparcia.
  • Po wszystkim zapytaj kluczowych klientów o doświadczenie – to świetne źródło informacji, co poprawić.

Podsumowanie: zapanować nad 502 i wyjść z tego silniejszym

Błędy 502 są frustrujące, ale rzadko przypadkowe. Zwykle sygnalizują przeciążenie, złą konfigurację lub niedoskonałość w łańcuchu zależności. Kluczem jest powtarzalny plan: szybka weryfikacja, prosta komunikacja, krótkoterminowe obejście, a potem konkretny plan prewencji.

Najważniejsze, by nie odkładać działań naprawczych „na później”. Każdy incydent to szansa na wzmocnienie architektury, usprawnienie procesów i zbudowanie zaufania. Jeśli wdrożysz opisane tu praktyki – od rozsądnych timeoutów, przez cache i autoscaling, po dobrą obserwowalność – prawdopodobieństwo, że Twoi klienci ponownie zobaczą 502 Bad Gateway, spadnie radykalnie.

A kiedy mimo wszystko coś znów zawiedzie, będziesz mieć wszystko, czego trzeba: plan, narzędzia i spokój działania. To często robi największą różnicę.

Łukasz Janeczko

Nazywam się Łukasz i stoję za DropDigital – ogarniam PrestaShop, WordPressa i własne moduły, które ułatwiają życie przedsiębiorcom. Prywatnie fan muzyki, Linuxa i motoryzacji, z zamiłowaniem do rozwiązywania problemów “po swojemu”.

Zostaw swój numer - oddzwonię

Cześć! Zadzwoń +48 572 651 439 lub napisz lub zostaw numer telefonu, a oddzwonię w ciągu 1h i porozmawiamy o ofercie.

Picture of Łukasz Janeczko

Łukasz Janeczko

Programista - DropDigital.pl