Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Administracja Linux Windows

502 Bad Gateway Wyjaśnione: Co To Oznacza, Dlaczego To Się Dzieje i Jak To Rozwiązać

Słowa kluczowe

Ten krótki słownik obejmuje słowa infrastrukturalne, które najprawdopodobniej mogą powodować zamieszanie podczas głębszej fazy wyjaśniania.

Słowo kluczoweKrótkie wyjaśnienie
🌐 502 Bad GatewayBłąd HTTP pokazujący, że jeden serwer nie mógł użyć odpowiedzi otrzymanej z następnego serwera za nim.
🚪 GatewaySerwer, który znajduje się między odwiedzającym a inną usługą, przekazując żądania dalej.
🔁 Proxy / Reverse ProxySerwer frontowy, który najpierw przyjmuje żądanie, a następnie przekazuje je do wewnętrznej usługi.
⬆️ UpstreamNastępny serwer lub usługa za proxy — ten, który powinien odpowiedzieć na żądanie.
⚙️ BackendStrona aplikacji wykonująca rzeczywistą pracę, taka jak proces aplikacji, usługa lub runtime.
🏠 OriginSerwer, do którego CDN lub usługa edge próbuje dotrzeć w imieniu odwiedzającego.
⚖️ Load BalancerWarstwa frontowa, która rozprowadza żądania na jeden lub więcej celów backendowych.
☁️ CDN / EdgeWarstwa sieciowa bliżej odwiedzających, która może buforować, filtrować lub przekazywać ruch zanim dotrze do origin.
🧭 DNSSystem nazewnictwa, który pomaga rozwiązać nazwę hosta na adres serwera, który powinna używać usługa.
🔐 TLSWarstwa szyfrowania i tożsamości za HTTPS; niezgodność tutaj może przerwać przekazywanie między serwerami.
🔌 Port / SocketPunkt końcowy sieci lub ścieżka lokalnego socketu, gdzie backend powinien nasłuchiwać połączeń.

Dlaczego błąd 502 wydaje się taki destrukcyjny

disruptive

Wdrażasz aplikację, odświeżasz stronę, a domena odpowiada natychmiast — tyle że nie z Twoją aplikacją. Albo klient klika Checkout, strona się ładuje, a transakcja umiera za ostrym komunikatem 502 Bad Gateway. To właśnie sprawia, że ten błąd jest taki stresujący: strona jest dostępna, ale nie w wystarczająco dobrym stanie, aby ukończyć przekazanie.

502 znajduje się w niezręcznym stanie pośrednim. Nie wygląda jak całkowita niedostępność, ale też nie zachowuje się jak działająca usługa. Dla deweloperów może to oznaczać uszkodzony deploy lub łańcuch API. Dla właścicieli biznesu — utratę zaufania lub przerwane przychody. Dla zespołów najgorsza część to często odpowiedzialność: która warstwa faktycznie jest właścicielem problemu?

Użytecznym podejściem jest nie zgadywanie. Najpierw zdefiniuj, co błąd oznacza. Następnie zmapuj, gdzie znajduje się w łańcuchu żądań. Potem rozwiąż błąd logicznie, jedno przekazanie na raz. Gdy zobaczysz łańcuch, błąd przestaje wyglądać na losowy.

Co naprawdę oznacza błąd 502 Bad Gateway

error

Błąd 502 Bad Gateway zwykle oznacza, że serwer działający jako brama lub proxy nie mógł wykorzystać odpowiedzi, którą otrzymał z następnej warstwy za nim. Mówiąc prościej: jeden serwer próbował przekazać Twoją prośbę innemu serwerowi, a to przekazanie nie powiodło się na tyle źle, że serwer frontowy nie mógł zwrócić normalnego wyniku.

📝 Uwaga: Jeśli upstream zwróci własny prawidłowy błąd HTTP, proxy zwykle przekaże ten błąd dalej. Jeśli aplikacja zwróci rzeczywisty 503 Service Unavailable, warstwa frontowa powinna normalnie przekazać ten 503, a nie wymyślać 502. 502 oznacza, że sama odpowiedź była bezużyteczna. Jeśli żadna użyteczna odpowiedź nie dotrze na czas, jest to często 504.

Najszybszy sposób, aby przestać błędnie interpretować błędy 5xx, to rozdzielić je na podstawie tego, gdzie znajduje się awaria i jakie pytanie powinno być zadane jako pierwsze:

StatusCo się nie powiodłoGdzie znajduje się awariaNajlepsze pierwsze pytanie
500Aplikacja lub origin napotkały błąd wewnętrzny podczas obsługi żądaniaWewnątrz samej aplikacji lub usługi originCo się zepsuło wewnątrz aplikacji?
502Brama lub proxy otrzymała nieprawidłową lub bezużyteczną odpowiedź z następnego przeskokuW punkcie przekazania między warstwamiKtóry serwer przekazał żądanie i co wróciło?
503Usługa jest tymczasowo niedostępna lub odmawia pracyW usłudze, która powinna obsługiwać żądanieCzy usługa jest przeciążona, w trakcie konserwacji czy celowo niedostępna?
504Brama lub proxy nie otrzymała odpowiedzi na czas z następnego przeskokuW tej samej strefie przekazania co 502, ale z semantyką timeoutCzy upstream nie odpowiedział przed zamknięciem okna timeout?

⚠️ Ostrzeżenie: Nie łącz 500, 502, 503 i 504 w jedną ogólną kategorię „serwer wyłączony”. Wskazują one na różne rodzaje awarii, a to zmienia to, co powinieneś sprawdzić jako pierwsze.

Gdy ta definicja jest jasna, następne pytanie staje się znacznie bardziej przydatne: gdzie w rzeczywistym stosie faktycznie dochodzi do tego nieudanego przekazania?

Gdzie błąd pojawia się w rzeczywistym łańcuchu żądań

chain

Większość nowoczesnych żądań nie podróżuje bezpośrednio z przeglądarki do aplikacji. Przechodzą przez warstwy: przeglądarka do CDN lub edge, edge do reverse proxy lub load balancera, proxy do procesu aplikacji. 502 staje się widoczny w jednym z tych punktów przekazania.

Uproszczony łańcuch żądań: Przeglądarka → CDN/Edge → Reverse Proxy / Load Balancer → App / Process

Reverse proxy przyjmuje publiczne żądanie i przekazuje je wewnętrznie. Load balancer robi coś podobnego, ale może wybrać między wieloma zdrowymi celami. W obu przypadkach warstwa frontowa kieruje żądaniem, a nie wykonuje samą logikę biznesową.

Analogia do recepcji działa tu dobrze. Pomyśl o proxy jako o recepcji w budynku biurowym. Rejestruje gościa, wyszukuje właściwe biuro i próbuje przekazać gościa. Jeśli biuro nie odpowiada, odpowiada na złej linii lub daje odpowiedź, której recepcja nie może wykorzystać, recepcja zwraca błąd. Dlatego widoczny błąd często pojawia się w warstwie proxy, nawet gdy głębsza przyczyna znajduje się gdzie indziej.

📝 Uwaga: Proxy jest często posłańcem błędu, a nie pierwotną przyczyną.

“Następny serwer” za tą recepcją może być normalną usługą HTTP na porcie, słuchaczem aplikacji takim jak 127.0.0.1:3000, lub procesem wspieranym przez lokalny socket, takim jak PHP-FPM. Problem główny nie musi znajdować się w proxy. Zła wdrożenie, zawalony worker aplikacji, lub nawet błąd bazy danych mogą złamać backend na tyle, że 502 pojawia się po prostu tam, gdzie proxy.

Usługi edge dodają jeszcze jeden zwrot. CDN taki jak Cloudflare może przekazać 502 ze strony origin z głębszych warstw stosu, lub może wygenerować 502 sam, gdy handshake edge-to-origin się nie powiedzie. Dlatego “kto zwrócił ten błąd?” jest pierwszym praktycznym pytaniem, a nie myślą dodatkową.

Dlaczego pojawiają się błędy 502: Główne kategorie awarii

why-fail

Gdy przestaniesz traktować 502 jako jedną tajemniczą zdarzenie, krajobraz przyczyn staje się znacznie łatwiejszy do zarządzania. Większość incydentów mieści się w trzech powtarzalnych kategoriach: upstream jest niedostępny, samo przekazanie jest błędnie skonfigurowane, lub odpowiedź wraca w formie, której brama nie może wykorzystać.

KategoriaPrzykład awariiCo zwykle testujesz dalej
Upstream niedostępnyProces aplikacji uległ awarii, usługa zatrzymana, niezdrowy cel po wdrożeniuCzy usługa jest uruchomiona i czy coś nasłuchuje tam, gdzie proxy tego oczekuje?
Niezgodność przekazaniaZły port, zła ścieżka gniazda, zły protokół, błąd DNS, blokada zapory, niezgodność TLSCzy proxy wskazuje na właściwe miejsce z właściwym protokołem i trasą?
Nieużyteczna odpowiedźZniekształcone nagłówki, zbyt duże nagłówki, przedwczesne zamknięcie, reset połączenia, efekty przeciążeniaCo pokazują dzienniki, testy bezpośrednie i ustawienia limitu czasu lub nagłówków?

Pierwsza kategoria to oczywista: upstream nie jest dostępny w użytecznym stanie. Być może aplikacja uległa awarii po wdrożeniu. Być może usługa nigdy się nie uruchomiła ponownie. Być może pula PHP-FPM umarła, lub cel został oznaczony jako niezdrowy i usunięty z rotacji. To klasyczny scenariusz „usługa wyłączona”, ale to tylko jeden wycinek krajobrazu 502.

Druga kategoria to niezgodność przekazania. Tutaj obie warstwy mogą być uruchomione, ale nie zgadzają się co do sposobu komunikacji. Proxy może wskazywać na zły port. Nazwa hosta może być rozwiązywana niepoprawnie. Zapora może blokować ścieżkę. Jedna warstwa może oczekiwać HTTPS, podczas gdy następna mówi tylko zwykły HTTP. Ścieżka gniazda mogła się zmienić. W takich przypadkach aplikacja może być zdrowa, a połączenie między warstwami jest nadal zerwane.

Trzecia kategoria jest bardziej skomplikowana: upstream odpowiada, ale nie w sposób, który brama może wykorzystać. Cel może zresetować połączenie TCP, zamknąć je zbyt wcześnie, wysłać zniekształcone lub zbyt duże nagłówki, lub zwrócić częściowe dane pod obciążeniem. Aplikacja nie jest po prostu „wyłączona”; odpowiada wystarczająco źle, aby brama odrzuciła to, co otrzymała.

To również dlatego 502 nie jest tylko historią limitów czasu. Niektóre przypadki limitów czasu stają się 504 Gateway Timeout, a nie 502. Cloudflare może wyświetlać 502 generowane na krawędzi, gdy łączność źródła lub kompresja się psują. Moduły równoważenia obciążenia mogą emitować 502 podczas problemów z czasem wyrejestrowania lub błędów uzgadniania TLS. „Usługa wyłączona” to jedna kategoria przyczyn, a nie definicja błędu.

Ten model myślowy daje ci rzeczywistą listę kontrolną zanim kiedykolwiek dotkniesz pliku konfiguracyjnego. Zapytaj, w której kategorii prawdopodobnie się znajdujesz, a następnie testuj dowody. To sprawia, że sekwencja rozwiązywania problemów wydaje się logiczna zamiast rytualistycznej.

Inteligentna sekwencja rozwiązywania problemów z błędami 502

troubleshoot

Najszybszym sposobem na rozwiązanie problemu 502 jest zidentyfikowanie, która warstwa go zwróciła, a następnie przetestowanie następnego skoku za tą warstwą przed wprowadzeniem jakichkolwiek zmian. Chodzi o udowodnienie, gdzie znajduje się nieudane przekazanie.

💡 Wskazówka: Zanim zrestartujesz lub cokolwiek edytujesz, zidentyfikuj, kto zwrócił 502. Czysty krok atrybucji często oszczędza więcej czasu niż pierwsze pięć „poprawek”, które ludzie próbują pod presją.

Faza 1: Zidentyfikuj warstwę

Zacznij od strony publicznej i zapytaj, co dokładnie zwraca warstwa dostępna z internetu:

curl -I https://example.com

To pokazuje status HTTP i nagłówki z publicznego adresu URL. Jeśli nagłówki wyraźnie należą do CDN, load balancera lub reverse proxy, masz pierwszą wskazówkę. Jeśli strona błędu jest oznaczona marką Cloudflare, Cloudflare mógł wygenerować sam 502; jeśli nie ma marki, krawędź może po prostu przekazywać błąd ze strony origin. Nagłówki takie jak cf-error-type lub cf-error-origin mogą pojawić się na stronach błędów generowanych przez Cloudflare, co jest przydatne właśnie dlatego, że nie pojawiają się na każdym 502.

📝 Uwaga: Jeśli błąd widzi tylko jeden odwiedzający, a inni mogą dotrzeć do witryny, lokalne ustawienia VPN, proxy, firewall lub DNS mogą być częścią problemu. 502 to zwykle błąd po stronie serwera, ale izolowana ścieżka klienta może zaciemnić to, co obserwujesz.

Faza 2: Zweryfikuj ścieżkę upstream

Gdy już wiesz, która warstwa zwróciła 502, przetestuj następny skok za nią. Jeśli zaangażowany jest reverse proxy, potwierdź, że zarówno proxy, jak i usługa backend działają, i potwierdź, że oczekiwany listener istnieje:

systemctl status nginx
systemctl status <app-service>
ss -tlnp

Zastąp <app-service> nazwą twojej usługi backend. systemctl status mówi ci, czy proces proxy lub aplikacji jest aktywny, zawodzi lub restartuje się. ss -tlnp pokazuje, czy coś faktycznie nasłuchuje na porcie, który oczekujesz.

Następnie przetestuj, czy backend odpowiada bezpośrednio bez proxy pośrodku:

curl -i http://127.0.0.1:3000

Jeśli bezpośrednie żądanie działa, ale publiczny adres URL nadal zwraca 502, backend może być zdrowy, a rzeczywistym problemem może być przekazanie. To wskazuje na ustawienia celu proxy, niezgodności protokołów, nazwy hostów upstream, oczekiwania TLS lub reguły firewall, a nie tylko na kod aplikacji.

Faza 3: Używaj poleceń jako dowodu, nie ceremonii

Po bezpośrednich sprawdzeniach przejdź do dowodów, które wyjaśniają, dlaczego przekazanie się nie powoduje:

journalctl -u nginx -u <app-service> --since "15 min ago"
dig +short example.com
nginx -t

Te trzy sprawdzenia odpowiadają na różne pytania. journalctl ujawnia niedawne awarie, resetowania, wskazówki dotyczące timeout’ów i błędy związane z wdrożeniem. dig +short mówi ci, czy nazwa hosta, od której zależy, rozwiązuje się w sposób, którego oczekuje serwer. nginx -t sprawdza poprawność składni reverse-proxy przed przeładowaniem czegokolwiek, co ma znaczenie, ponieważ zła definicja upstream może wygenerować 502 nawet wtedy, gdy backend jest w porządku.

Praktyczne sygnały zwykle wyglądają tak:

SygnałCo to sugerujeNastępne sprawdzenie
Publiczny curl -I zwraca 502 z CDN lub edgeKrawędź może generować błąd lub przekazywać go ze strony originOkreśl, czy strona krawędzi ma markę i porównaj z dostępnością po stronie origin
Bezpośredni curl do 127.0.0.1:3000 działa, ale publiczny adres URL zawodziBackend odpowiada, ale przekazanie proxy lub load balancera jest błędneSprawdź cel upstream, protokół, TLS i konfigurację proxy
systemctl status <app-service> pokazuje failed lub inactiveUpstream jest niedostępnyPrzejrzyj niedawne logi i ostatnie zdarzenie wdrożenia lub restartu
ss -tlnp nic nie pokazuje na oczekiwanym porcieUsługa nie nasłuchuje tam, gdzie proxy ją oczekujePotwierdź adres bind, port, ścieżkę socket i konfigurację uruchamiania
journalctl pokazuje resetowania, problemy z nagłówkami lub przedwczesne zamknięciaOdpowiedź dociera do bramy w uszkodzonej formieSkoreluj logi proxy z logami aplikacji i sprawdź zachowanie odpowiedzi lub nagłówków
dig +short zwraca błędny host lub brak odpowiedziRozwiązanie nazw jest częścią błędu przekazaniaNapraw nazwę hosta upstream, rekordy DNS lub ścieżkę resolvera

To jest główny wzorzec do zapamiętania: zidentyfikuj warstwę, zweryfikuj następny skok, a następnie użyj logów i bezpośrednich testów, aby wyjaśnić niezgodność. Dowody najpierw. Ustawienia drugie.

Jak ścieżka rozwiązywania problemów zmienia się w zależności od modelu hostingu

path

Następny krok po błędzie 502 zależy od tego, jak dużą część stosu kontrolujesz. Logika rozwiązywania problemów pozostaje taka sama, ale ilość informacji, które możesz sprawdzić samodzielnie, znacznie się różni między hostingiem współdzielonym, VPS, serwerami dedykowanymi i konfiguracjami z edge-proxy.

ŚrodowiskoCo zwykle możesz sprawdzićKiedy eskalować
Hosting współdzielonyOgraniczone logi, status panelu kontrolnego, powtarzalny URL lub wzorzec czasowyWcześnie — zwłaszcza jeśli nie możesz bezpośrednio sprawdzić logów proxy lub usług
VPSUsługi, porty, logi, konfiguracja reverse-proxy, firewall, lokalny DNSPo potwierdzeniu, że problem znajduje się poza twoją usługą lub ścieżką konfiguracji
Serwer dedykowanyPełny stos plus głębsza odpowiedzialność za sieć i systemGdy problem wskazuje na sieć dostawcy, sprzęt lub zależności upstream poza twoją kontrolą
CDN / konfiguracja z edge-proxyZachowanie edge, nagłówki, wskazówki branding, osiągalność originGdy wiesz, czy edge wygenerował błąd, czy go przekazał

📝 Uwaga: Na hostingu współdzielonym eskalacja to nie unik. To często prawidłowy ruch techniczny, ponieważ warstwy najważniejsze dla błędu 502 mogą być poza twoją widocznością.

Na hostingu współdzielonym, najpożyteczniejszą rzeczą, którą możesz zrobić, jest zebranie dowodów: czas, dotknięty URL, czy błąd jest stały czy przerywaczy, i czy pojawił się po wdrożeniu lub zmianie konfiguracji. To daje supportowi coś do działania. Jeśli nie kontrolujesz reverse proxy, usługi aplikacji lub logów serwera, sensowna diagnoza warstwa po warstwie kończy się szybko.

Na VPS, pełny przepływ pracy staje się realistyczny, ponieważ możesz bezpośrednio sprawdzić usługi, nasłuchiwacze, logi i konfigurację proxy. To miejsce, gdzie należy rozwiązywanie problemów reverse-proxy. Na infrastrukturze AlexHost VPS, sprawdzanie systemctl, journalctl, ss, celów upstream i konfiguracji Nginx jest częścią normalnego posiadania, a nie czymś zawsze ukrytym za supportem.

Serwer dedykowany daje ci tę samą widoczność, ale z większą odpowiedzialnością. Posiadasz więcej pełnego stosu i możliwie więcej otaczających założeń sieciowych. Jeśli dodasz CDN lub inną usługę edge z przodu, pierwsze pytanie o posiadanie pozostaje takie samo: czy edge wygenerował błąd 502, czy przekazał awarię po stronie origin? Większa kontrola nie czyni rozwiązywania problemów prostszym z założenia. Daje ci więcej miejsc do sprawdzenia.

Myśl warstwami, nie w panice

think

Błąd 502 Bad Gateway przestaje być tajemniczy, gdy potraktujesz go jako to, czym zwykle jest: nieudaną transmisję między serwerami, a nie losowe zdarzenie przeglądarki. Przeglądarka to tylko miejsce, gdzie go zauważasz. Prawdziwa historia rozgrywa się w warstwie, która przekazuje żądanie następnej i nie otrzymuje czegoś użytecznego.

Dlatego utrzymuj sekwencję prostą: zidentyfikuj warstwę, sprawdź następny przeskok, zweryfikuj bezpośrednimi testami i logami, i zmieniaj ustawienia tylko wtedy, gdy dowody wskazują na coś konkretnego. Jeśli powtarzające się incydenty ciągle zmuszają cię do głębszych logów, proxy i widoczności usług, to moment, w którym środowiska o wyższej kontroli — w tym AlexHost VPS lub serwery dedykowane — stają się przydatne z powodów operacyjnych, a nie marketingowych. Metoda pokonuje zapamiętywanie tutaj.