504 Gateway Timeout: co oznacza i jak naprawić

Kluczowy wniosek

504 Gateway Time-out oznacza, że proxy lub brama (nginx, Cloudflare, load balancer, CDN) czekały na serwer za sobą i się poddały: upstream nie odpowiedział na czas. Jako odwiedzający odczekaj minutę i odśwież stronę; naprawa leży po stronie witryny. Jako właściciel znajdź w logach wolny element (zapytanie, zewnętrzne API, zajęte workery PHP) i sprawdź timeout każdej warstwy: nginx domyślnie czeka 60 sekund, CloudFront 30, load balancer Google Cloud 30, a Cloudflare 125, zanim pokaże Error 524.

Sprawdź teraz

Poradnik naprawy błędu 504 gateway timeout: łańcuch timeoutów między proxy a serwerem upstream i kroki diagnostyki
Poradnik naprawy błędu 504 gateway timeout: łańcuch timeoutów między proxy a serwerem upstream i kroki diagnostyki
Zacznij czytać
  1. Czym jest błąd 504 Gateway Timeout?
  2. Jak wygląda błąd 504
  3. Jak dochodzi do błędu 504 Gateway Timeout
  4. Najczęstsze przyczyny błędu 504 Gateway Timeout
  5. Rozwiązanie dla odwiedzających: co możesz zrobić
  6. Rozwiązanie 1: zwiększ ustawienia timeout (Nginx i Apache)
  7. Rozwiązanie 2: zoptymalizuj wolne skrypty i zapytania do bazy danych
  8. Rozwiązanie 3: sprawdź zasoby serwera (CPU, RAM, dysk)
  9. Rozwiązanie 4: sprawdź logi błędów
  10. Rozwiązanie 5: dostosuj ustawienia PHP-FPM
  11. Rozwiązanie 6: sprawdź konfigurację CDN i proxy
  12. Rozwiązanie 7: rozwiązania specyficzne dla WordPress
  13. 504 vs 502 vs 503 vs 408: jaka jest różnica?
  14. Czy błąd 504 wpływa na SEO?
  15. Jak zapobiegać błędom 504 Gateway Timeout
  16. Często zadawane pytania

Czym jest błąd 504 Gateway Timeout?

504 Gateway Timeout to kod statusu HTTP oznaczający, że serwer działający jako brama lub proxy nie otrzymał na czas odpowiedzi od serwera upstream. Proxy czekało na odpowiedź, ale trwało to zbyt długo, więc się poddało i zwróciło przeglądarce błąd 504.

Definiuje go RFC 9110: „Kod statusu 504 (Gateway Timeout) oznacza, że serwer, działając jako brama lub proxy, nie otrzymał na czas odpowiedzi od serwera upstream, do którego musiał się zwrócić, aby zrealizować żądanie” (RFC 9110 §15.6.5).

Kluczowe jest słowo gateway. W błędzie 504 zawsze biorą udział co najmniej dwa serwery: ten, z którym się połączyłeś (proxy/brama), i ten za nim (upstream/origin), który nie odpowiedział. Typowe proxy to reverse proxy Nginx, Cloudflare, AWS Application Load Balancer (ALB) i CloudFront.

Czy 504 widzą wszyscy, czy tylko Ty? Sprawdź

Jak wygląda błąd 504

Treść zależy od tego, która warstwa się poddała:

  • 504 Gateway Time-out z napisem „nginx” poniżej: nginx (pisze to z łącznikiem)
  • 504 Gateway Time-out · The server didn't respond in time.: domyślna strona HAProxy
  • Gateway Timeout · The gateway did not receive a timely response from the upstream server or application.: Apache przed PHP-FPM (mod_proxy_fcgi). Apache jako proxy dla backendu HTTP pokazuje zamiast tego Proxy Error · Error reading from remote server (to 502).
  • ERROR · The request could not be satisfied · 504 ERROR: Amazon CloudFront
  • Error 524: A timeout occurred: wersja Cloudflare; dotarł do Twojego serwera, ale odpowiedź nie nadeszła na czas
  • Ta strona nie działa · Serwer example.com potrzebował zbyt wiele czasu na odpowiedź. · Błąd HTTP 504: Chrome, gdy 504 nie ma własnej strony

Niezależnie od treści przyczyna jest ta sama: proxy czekało na serwer za sobą, a odpowiedź nie nadeszła na czas. (Chrome używa tego samego zdania „potrzebował zbyt wiele czasu na odpowiedź”, gdy przeglądarka w ogóle nie mogła się połączyć, ale wtedy nagłówek brzmi „Ta witryna jest nieosiągalna”, a kod to ERR_CONNECTION_TIMED_OUT, nie Błąd HTTP 504: zobacz ERR_CONNECTION_TIMED_OUT.)

Jak dochodzi do błędu 504 Gateway Timeout

Aby zrozumieć błąd 504, trzeba poznać łańcuch timeoutów między przeglądarką a serwerem origin. Typowe żądanie przechodzi przez wiele warstw, a każda ma własne ustawienie timeoutu.

Typowy przebieg żądania: Przeglądarka → CDN (Cloudflare) → Load balancer → Nginx → PHP-FPM → Baza danych. Jeśli zapytanie do bazy trwa 90 sekund, a fastcgi_read_timeout w nginx wynosi 60 sekund, nginx przestaje czekać i zwraca 504 do load balancera, który przekazuje go przez CDN do Twojej przeglądarki.

Serwer, który zwraca 504, to zwykle proxy pośrodku, a nie sama aplikacja. Aplikacja może nadal przetwarzać żądanie albo być zawieszona.

WarstwaDomyślny timeoutCo się dzieje po jego upływie
Cloudflare (Free, Pro, Business)125 sekundError 524 (własny kod Cloudflare)
Amazon CloudFront30 sekund (1-120 s; więcej na prośbę)504 ERROR
AWS Application Load Balancer60 sekund bezczynności504 od awselb
Load balancer Google Cloud30 sekund502 w klasycznych i globalnych zewnętrznych load balancerach; 504 w regionalnych i wewnętrznych
nginx (proxy_read_timeout, fastcgi_read_timeout)60 sekund504 Gateway Time-out
Apache (ProxyTimeout)Tyle co Timeout: 60 sekund504 z PHP-FPM (mod_proxy_fcgi); backend HTTP daje 502 Proxy Error
PHP-FPM (request_terminate_timeout)0 (wyłączony)Worker zostaje zabity: nginx dostaje zamknięte połączenie (502)

Źródła: Cloudflare 524, ustawienia origin w CloudFront, Google Cloud i dokumentacja każdego serwera. Własny max_execution_time w PHP (30 sekund) nie daje 504: skrypt, który go osiągnie, zatrzymuje się z błędem krytycznym, widocznym jako 500. Na Linuksie nie liczy też czasu oczekiwania na bazę danych ani inne operacje I/O, więc skrypt zablokowany na wolnym zapytaniu może działać znacznie dłużej.

Najczęstsze przyczyny błędu 504 Gateway Timeout

Typowe powody, dla których proxy przestaje czekać:

  • Wolne żądanie — ciężkie zapytanie do bazy, raport lub wywołanie wolnego zewnętrznego API trwa dłużej niż timeout proxy.
  • Przeciążony serwer — CPU na 100%, brak pamięci albo wszystkie workery PHP-FPM zajęte, więc nowe żądania czekają w kolejce, aż proxy się podda.
  • Wąskie gardła w bazie danych — wolne zapytania, brakujące indeksy, zablokowane tabele lub wyczerpana pula połączeń.
  • Zbyt niskie timeouty — 60 sekund w nginx to za mało dla backendu, który naprawdę potrzebuje więcej czasu (eksport, import, duży upload).
  • Problemy sieciowe między proxy a origin — utrata pakietów lub zapora, która po cichu odrzuca pakiety proxy (zapora, która je odrzuca jawnie, daje 502).
  • Stały limit CDN — Cloudflare czeka 125 sekund w planach Free, Pro i Business, niezależnie od ustawień nginx, a potem pokazuje Error 524.
  • Zalew ruchu — skok liczby żądań lub atak zajmuje workery, więc zwykłe żądania nie dostają odpowiedzi na czas. (Serwer, który wie o swoim przeciążeniu, może zamiast tego odpowiedzieć 503.)

Rozwiązanie dla odwiedzających: co możesz zrobić

Jeśli widzisz błąd 504 na cudzej stronie, problem leży po stronie ich serwera, nie Twojego urządzenia. Warto jednak spróbować kilku rzeczy.

  • Odczekaj minutę i odśwież — wiele błędów 504 trwa tylko tyle, ile gorący moment na serwerze.
  • Sprawdź, czy strona nie działa dla wszystkich — Website Down Checker otwiera stronę z 11 miejsc. Jeśli tam też jest 504, problem leży w witrynie.
  • Spróbuj innej sieci — dane mobilne zamiast Wi-Fi albo bez VPN, na wypadek gdyby to Twoje proxy lub VPN było bramą, która przekracza czas.
  • Zajrzyj na stronę statusu lub profile społecznościowe witryny — popularne serwisy często informują o awariach.

Rozwiązanie 1: zwiększ ustawienia timeout (Nginx i Apache)

Najczęstszą poprawką błędów 504 jest zwiększenie wartości timeoutów na reverse proxy. Jeśli Twój backend faktycznie potrzebuje więcej niż 60 sekund (wartość domyślna), proxy musi wiedzieć, że ma czekać dłużej.

nginx
# nginx — reverse proxy to a backend (Node.js, Python, etc.)
location / {
    proxy_pass http://backend;
    proxy_read_timeout 300;
    proxy_send_timeout 300;
}

# nginx — FastCGI (PHP-FPM)
location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    fastcgi_read_timeout 300;
    fastcgi_send_timeout 300;
    include fastcgi_params;
}

# Leave proxy_connect_timeout / fastcgi_connect_timeout at their defaults:
# nginx caps them at about 75 seconds, and a dead backend should fail fast.

W Apache dodaj ProxyTimeout 300 w VirtualHost albo użyj ProxyPass / http://backend:8080/ timeout=300 dla jednego backendu.

Ważne: timeouty odczytu i wysyłania mierzą przerwę między dwiema kolejnymi operacjami odczytu lub zapisu, a nie łączny czas transferu. Zatem proxy_read_timeout 300 oznacza „jeśli przez 300 sekund nie nadejdą żadne dane”, a nie „cała odpowiedź musi zakończyć się w 300 sekund”. Po zmianie przeładuj konfigurację: sudo nginx -t && sudo systemctl reload nginx.

Za CDN obowiązuje także jego własny limit: Cloudflare ucina po 125 sekundach (od Free do Business), a CloudFront domyślnie po 30, więc podniesienie wartości w nginx ponad te limity nic nie zmieni dla odwiedzających, którzy przychodzą przez CDN.

Rozwiązanie 2: zoptymalizuj wolne skrypty i zapytania do bazy danych

Jeśli Twój backend stale przekracza timeout, zwiększanie jego wartości tylko maskuje problem. Prawdziwa naprawa to przyspieszenie backendu.

  • Znajdź wolne zapytania — Włącz log wolnych zapytań MySQL (slow_query_log = 1, long_query_time = 1) lub użyj EXPLAIN ANALYZE na podejrzanych zapytaniach. Dodaj brakujące indeksy, unikaj SELECT * i stronicuj duże zbiory wyników.
  • Dodaj cache — Użyj Redis lub Memcached, aby cache'ować wyniki kosztownych zapytań. Zapytanie, które przy każdym załadowaniu strony trwa 5 sekund, powinno być cache'owane.
  • Przenieś ciężką pracę do zadań w tle — Generowanie raportów, wysyłka e-maili, przetwarzanie obrazów i importy danych powinny działać w kolejce zadań (Celery, Sidekiq, Bull), a nie w cyklu żądania HTTP.
  • Zoptymalizuj wywołania API — Jeśli backend wywołuje wolne zewnętrzne API, dodaj do tych wywołań timeouty i wdróż circuit breakery, aby jedno wolne API nie blokowało wszystkich żądań.
  • Ogranicz zapytania N+1 — Zapytania generowane przez ORM często wykonują setki pojedynczych wywołań bazy. Użyj eager loadingu lub zapytań wsadowych, aby zmniejszyć liczbę rund.

Rozwiązanie 3: sprawdź zasoby serwera (CPU, RAM, dysk)

Jeśli serwer origin jest przeciążony, nie przetwarza żądań dość szybko, a proxy przekracza czas oczekiwania. Sprawdź, co zużywa zasoby.

bash
# Check CPU and memory usage
top -bn1 | head -20

# Check disk space (full disk = silent failures)
df -h

# Check memory details
free -m

# Find processes using the most CPU
ps aux --sort=-%cpu | head -10

# Find processes using the most memory
ps aux --sort=-%mem | head -10

# Check active network connections
ss -s

Jeśli CPU lub RAM jest wykorzystane w ponad 90%, musisz zoptymalizować aplikację, zabić wymykające się spod kontroli procesy albo rozbudować serwer. Jeśli dysk jest pełny, usuń stare logi, kopie zapasowe lub pliki tymczasowe; pełny dysk może po cichu wywrócić bazy danych i wywołać lawinę błędów 504.

Rozwiązanie 4: sprawdź logi błędów

Logi błędów mówią dokładnie, dlaczego proxy zwróciło 504. Zawsze zajrzyj do logów, zanim zaczniesz zgadywać przyczynę.

bash
# Nginx error log (look for "upstream timed out")
tail -50 /var/log/nginx/error.log

# Apache error log
tail -50 /var/log/apache2/error.log       # Debian/Ubuntu
tail -50 /var/log/httpd/error_log          # CentOS/RHEL

# PHP-FPM log
tail -50 /var/log/php8.3-fpm.log

# System log (OOM kills, crashes)
tail -50 /var/log/syslog

Typowe komunikaty w logach przy błędzie 504:

„upstream timed out (110: Connection timed out) while reading response header from upstream” (nginx): backend potrzebował więcej czasu niż proxy_read_timeout (lub fastcgi_read_timeout). Przyspiesz go albo zwiększ timeout, jeśli to czekanie jest uzasadnione.

„upstream timed out (110: Connection timed out) while connecting to upstream” (nginx): nginx nie zdołał nawet połączyć się na czas: zapora odrzuca pakiety albo backend jest zbyt zajęty, by przyjmować połączenia.

„server reached pm.max_children setting” (PHP-FPM): wszystkie workery są zajęte, więc żądania czekają w kolejce. Zwiększ pm.max_children tylko wtedy, gdy starczy RAM-u; w przeciwnym razie znajdź wolne żądania, które blokują workery.

„Too many connections” (MySQL): limit połączeń został wyczerpany. Nowe połączenia kończą się od razu błędem (to 500, jak „Error establishing a database connection” w WordPressie), a zapytania, które je trzymają, to często te wolne, stojące za Twoimi błędami 504.

Rozwiązanie 5: dostosuj ustawienia PHP-FPM

W aplikacjach PHP (WordPress, Laravel, Magento) trzymaj timeouty w łańcuchu, w którym każda warstwa jest nieco dłuższa od tej za nią: fastcgi_read_timeout w nginx ≥ request_terminate_timeout w PHP-FPM ≥ max_execution_time w PHP.

UstawieniePlikDomyślnieZalecane
max_execution_timephp.ini30 sekundTyle, ile potrzebuje Twoja najwolniejsza prawidłowa strona (na Linuksie nie liczy oczekiwania na bazę)
request_terminate_timeoutKonfiguracja puli PHP-FPM0 (wyłączony)Trochę powyżej max_execution_time, jako twardy limit
pm.max_childrenKonfiguracja puli PHP-FPM5Dostępny RAM ÷ rozmiar jednego procesu PHP (sprawdź przez ps)
pm.max_requestsKonfiguracja puli PHP-FPM0 (nigdy nie odtwarza)500-1000, aby ograniczyć wycieki pamięci
fastcgi_read_timeoutKonfiguracja nginx60 sekund≥ request_terminate_timeout

Po zmianie ustawień PHP-FPM zrestartuj go (sudo systemctl restart php8.3-fpm, dopasuj wersję). Jeśli fastcgi_read_timeout w nginx jest krótszy niż limity PHP, nginx podda się pierwszy, a odwiedzający zobaczą 504, gdy PHP jeszcze pracuje.

Rozwiązanie 6: sprawdź konfigurację CDN i proxy

Jeśli Twoja strona stoi za CDN, takim jak Cloudflare czy AWS CloudFront, CDN ma własne ustawienia timeoutów, które mogą przesłonić konfigurację serwera.

CDN lub load balancerDomyślnieMożna zwiększyć?Uwagi
Cloudflare Free, Pro, Business125 sekundNiePokazuje Error 524, a nie 504
Cloudflare Enterprise125 sekundDo 6000 sekundCache Rule lub ustawienie proxy_read_timeout strefy
Amazon CloudFront30 sekund1-120 sekund; więcej po zgłoszeniu prośby o zwiększenie limituOrigin settings → Response timeout; GET i HEAD są ponawiane (domyślnie 3 próby)
AWS Application Load Balancer60 sekundTakIdle timeout load balancera
Load balancer Google Cloud30 sekundTakTimeout backend service; klasyczny load balancer pokazuje 502, a nie 504

Cloudflare: w planach Free, Pro i Business, jeśli Twój origin nie zacznie odpowiadać w ciągu 125 sekund, Cloudflare się poddaje i pokazuje Error 524 (Cloudflare). Rada samego Cloudflare: przyspiesz żądanie, przenieś długie zadania w tło albo udostępnij je z subdomeny tylko z DNS (szara chmurka); plany Enterprise mogą podnieść limit.

CloudFront: zwiększ response timeout origin w ustawieniach origin dystrybucji (AWS). AWS radzi najpierw naprawić wolny origin. Przy żądaniach GET i HEAD CloudFront ponawia próby wobec origin (domyślnie 3 próby połączenia), więc origin może zobaczyć to samo żądanie kilka razy, zanim odwiedzający dostanie 504.

Aby sprawdzić, która warstwa wysłała 504, obejrzyj nagłówki odpowiedzi w HTTP Header Checker: server: awselb/2.0 to load balancer AWS, x-cache: Error from cloudfront to CloudFront, a server: nginx to nginx. Za Cloudflare każda odpowiedź zawiera server: cloudflare, więc tam wskazówką jest sam kod (524 lub 504).

Rozwiązanie 7: rozwiązania specyficzne dla WordPress

Strony WordPress szczególnie często dostają błędy 504 przez ciężkie wtyczki, rozdętą bazę danych i limity współdzielonego hostingu. Oto celowane poprawki.

  • Znajdź wolne wtyczki — Wyłącz wszystkie wtyczki, a potem włączaj je po jednej. Jeśli nie masz dostępu do wp-admin, zmień nazwę folderu plugins przez SSH: mv wp-content/plugins wp-content/plugins_disabled. Wolne zapytania do bazy wskaże wtyczka Query Monitor.
  • Zainstaluj wtyczkę cache — WP Super Cache, W3 Total Cache lub WP Rocket zmniejszają obciążenie serwera, podając statyczny HTML zamiast uruchamiać PHP przy każdym żądaniu.
  • Użyj cache obiektów — Zainstaluj Redis lub Memcached oraz wtyczkę object cache dla WordPressa. Cache'uje to wyniki zapytań do bazy w pamięci i zmniejsza obciążenie MySQL.
  • Wyczyść bazę danych — Usuń stare rewizje wpisów, transienty, spam w komentarzach i osierocone metadane. Użyj WP-Optimize lub WP-Sweep. Dodaj define('WP_POST_REVISIONS', 5);, aby ograniczyć przyszłe rewizje.
  • Przenieś wp-cron na prawdziwy cron — odwiedziny strony uruchamiają WP-Cron, który wykonuje zaległe zadania w żądaniu loopback zajmującym własnego workera PHP. Dodaj define('DISABLE_WP_CRON', true); do wp-config.php, a potem niech serwer uruchamia wp cron event run --due-now co 5 minut.

504 vs 502 vs 503 vs 408: jaka jest różnica?

Te kody błędów HTTP bywają mylone. Oto, co naprawdę oznacza każdy z nich.

KodNazwaCo się stałoCzy wymaga proxy?
408Request TimeoutKlient zbyt wolno wysyłał żądanie do serweraNie — serwer ucina klienta po czasie
502Bad GatewayProxy dostało od upstream zepsutą odpowiedź albo połączenie zostało odrzucone lub zamknięteTak
503Service UnavailableSerwer jest przeciążony lub w trakcie konserwacji i nie może teraz obsłużyć żądaniaNie — zwrócić go może każdy serwer
504Gateway TimeoutProxy nie dostało odpowiedzi od upstream w czasie timeoutuTak
524A Timeout OccurredCloudflare połączył się z origin, ale nie dostał odpowiedzi w ciągu 125 sekundTylko Cloudflare (niestandardowy)

Kluczowa różnica: 502 oznacza, że proxy dostało zepsutą odpowiedź albo połączenie zostało odrzucone lub zamknięte; 504 oznacza, że licznik czasu proxy dobiegł końca, gdy upstream milczał. 503 nie wymaga proxy: może go wysłać każdy przeciążony serwer. 408 to timeout po stronie klienta (klasa 4xx), gdy serwer przestał czekać na klienta.

Jeśli widzisz jednocześnie 502 i 504, backend prawdopodobnie sobie nie radzi: żądania, które przekraczają czas, dają 504, a workery, które padają lub są zabijane, dają 502.

Jeśli widzisz 502, a nie 504, nasz poradnik o 502 Bad Gateway omawia komunikaty z logu błędów nginx, które go wyjaśniają, w tym prawdziwy przypadek z tej strony.

Czy błąd 504 wpływa na SEO?

Dokumentacja Google opisuje, co robią błędy 5xx (dokumentacja Google o skanowaniu):

  • Skanowanie zwalnia dla całej witryny, proporcjonalnie do liczby adresów URL zwracających błędy serwera.
  • Zaindeksowane strony na początku zostają, ale adresy URL, które stale zwracają błąd serwera, są w końcu usuwane.
  • Skanowanie stopniowo wraca do normy, gdy serwer znów odpowiada kodem 2xx.

Jak zapobiegać błędom 504 Gateway Timeout

Lepiej zapobiegać, niż gasić pożary. Te praktyki pomogą serwerowi odpowiadać w granicach timeoutów.

  • Ustaw monitoring — monitor dostępności, który co kilka minut ładuje kluczowe strony, wychwyci błędy 504, zanim zgłoszą je użytkownicy.
  • Dopasuj łańcuch timeoutów — Upewnij się, że timeout CDN ≥ timeout proxy ≥ timeout aplikacji. Niedopasowane wartości powodują nieprzewidywalne błędy 504.
  • Wdróż health checki — Load balancery i proxy powinny sprawdzać serwery upstream health checkami i kierować ruch z dala od instancji, które nie odpowiadają.
  • Cache'uj agresywnie — Cache'uj zasoby statyczne, odpowiedzi API i zapytania do bazy. Odpowiedź z cache nigdy nie jest na tyle wolna, by spowodować 504.
  • Skaluj automatycznie — Użyj skalowania poziomego (więcej instancji), aby skoki ruchu nie przeciążały jednego serwera.
  • Wyprowadź ciężką pracę — Przenieś przetwarzanie plików, generowanie raportów, wysyłkę e-maili i masowe importy do kolejek zadań w tle. Nigdy nie wykonuj kosztownej pracy wewnątrz żądania HTTP.
  • Monitoruj wolne zapytania — Włącz logowanie wolnych zapytań w MySQL/PostgreSQL. Ustaw alerty dla zapytań trwających dłużej niż 1 sekunda.
  • Dbaj o zdrowe zależności — Monitoruj zewnętrzne API, od których zależy backend. Dodaj timeouty i circuit breakery, aby jedno wolne API nie wywołało lawiny błędów 504 u wszystkich użytkowników.

Sprawdź, czy serwer zwraca 504

Darmowy HTTP Header Checker od DNS Robot wysyła żądanie pod dowolny URL z naszego serwera i pokazuje kod statusu oraz nagłówki. server: awselb/2.0 oznacza, że odpowiedział load balancer AWS, a x-cache: Error from cloudfront, że CloudFront. Za Cloudflare każda odpowiedź zawiera server: cloudflare, więc tam wskazówką jest sam kod (524 lub 504).

Źródła

  1. RFC 9110 §15.6.5: 504 Gateway Timeout, IETF
  2. Error 524: a timeout occurred, Cloudflare
  3. Origin settings: response timeout, AWS
  4. HTTP status codes and Google's crawlers, Google
  5. Troubleshooting external Application Load Balancers, Google Cloud

Często zadawane pytania

Co oznacza 504 Gateway Timeout?

Proxy lub brama (nginx, Cloudflare, load balancer, CDN) czekały na serwer za sobą, odpowiedź nie nadeszła na czas i się poddały, wysyłając Ci 504. Serwer witryny jest wolny lub zawieszony; Twoje połączenie jest w porządku.

Czy błąd 504 to moja wina?

Nie. 504 to błąd po stronie serwera, między proxy witryny a jej własnym serwerem. Odśwież po minucie i sprawdź, czy strona nie działa dla wszystkich. Jedyny lokalny przypadek to przekroczenie czasu przez Twój własny VPN lub proxy, co wyklucza zmiana sieci.

Co oznacza „504 Gateway Time-out: The server didn't respond in time”?

To domyślna strona 504 HAProxy. HAProxy, czyli load balancer, czekał na jeden z serwerów witryny i się poddał. Naprawa leży po stronie witryny: wolny lub przeciążony backend albo zbyt niski server timeout w HAProxy.

Jaka jest różnica między błędem 502 a 504?

Oba pochodzą od proxy. 502 oznacza, że dostało ono zepsutą odpowiedź albo połączenie z upstream zostało odrzucone lub zamknięte. 504 oznacza, że jego licznik czasu dobiegł końca, gdy upstream milczał. 502 wskazuje na awarię lub błędną konfigurację, 504 na wolne działanie.

Co powoduje błąd 504 na Nginx?

Zwykle backend (PHP-FPM, Node.js, Python) potrzebował więcej czasu niż proxy_read_timeout lub fastcgi_read_timeout w nginx, domyślnie 60 sekund. W logu błędów jest wpis „upstream timed out (110: Connection timed out)” z informacją, czy stało się to przy łączeniu, czy przy czytaniu odpowiedzi.

Jak zwiększyć timeout w Nginx?

W bloku server lub location ustaw proxy_read_timeout (albo fastcgi_read_timeout dla PHP-FPM) na potrzebną liczbę sekund, na przykład 300, potem uruchom sudo nginx -t i przeładuj konfigurację. Timeout liczy przerwę między dwoma odczytami, a nie łączny czas odpowiedzi.

Czy Cloudflare może powodować błąd 504 Gateway Timeout?

Cloudflare pokazuje własny Error 524, gdy Twój origin nie zacznie odpowiadać w ciągu 125 sekund (Free, Pro i Business; Enterprise może podnieść to do 6000). Strona 504 z brandingiem Cloudflare oznacza, że 504 wysłał Twój serwer lub load balancer; pusty 504 bez brandingu pochodzi od samego Cloudflare, co zdarza się rzadko.

Czy błąd 504 szkodzi SEO?

Krótkie nie szkodzą. Google zwalnia skanowanie, gdy widzi błędy 5xx, i przez pewien czas zachowuje zaindeksowane strony, ale adresy URL, które stale zwracają błędy serwera, są w końcu porzucane. Skanowanie stopniowo wraca do normy, gdy serwer znów odpowiada prawidłowo.

Dlaczego moja strona WordPress pokazuje błąd 504?

Zwykle winna jest wolna wtyczka lub zapytanie do bazy, wszystkie workery PHP-FPM zajęte, rozdęta baza (rewizje, transienty), wp-cron wykonujący wolne zadania przy odwiedzinach albo ciasne limity hostingu. Wyłącz wtyczki, by znaleźć winowajcę, a wolne zapytania wskaże Query Monitor.

Co oznacza błąd 504 w CloudFront?

CloudFront czekał na Twój origin dłużej niż wynosi response timeout (domyślnie 30 sekund) albo nie mógł się z nim połączyć. Przy GET i HEAD najpierw ponawia próby (domyślnie 3). Przyspiesz origin, sprawdź jego security groups i kondycję, a response timeout zwiększ, jeśli czekanie jest uzasadnione (1-120 sekund, więcej po zgłoszeniu prośby o zwiększenie limitu).

O autorze

Shaik Vahid

Założyciel DNS Robot. Vahid przez lata pracował we wsparciu hostingu, naprawiając klientom domeny, rekordy DNS, certyfikaty SSL i dostarczanie poczty. Tworzy narzędzia DNS Robot i pisze te poradniki na podstawie błędów, które ludzie naprawdę widzą.

Sprawdzanie Nagłówków HTTP

Analizuj nagłówki odpowiedzi HTTP i ocenę nagłówków bezpieczeństwa