Błąd 504 Gateway Timeout przez proxy
Serwer pośredniczący czekał na odpowiedź od kolejnego serwera w łańcuchu i się jej nie doczekał. Ważne jest ustalenie, który pośrednik odpowiedział.
Zaktualizowano · Redakcja Prokso
- Kod 504 wysyła pośrednik, który nie doczekał się odpowiedzi od kolejnego serwera w łańcuchu
- Najczęściej strona przetwarza żądanie zbyt długo albo jest przeciążona
- Powtórz żądanie za minutę, a potem otwórz stronę bez proxy
Co oznacza błąd
Zgodnie ze standardem HTTP (RFC 9110) kod 504 wysyła serwer działający jako brama lub proxy, gdy nie otrzymał na czas odpowiedzi od serwera, do którego musiał się zwrócić, aby wykonać żądanie.
Pośredników w łańcuchu może być kilku: proxy, przez które pracujesz, a dalej CDN, load balancer lub nginx przed samą stroną. 504 może wysłać każdy z nich. Po wyglądzie strony błędu często widać, kto odpowiedział: Cloudflare ma na przykład własne kody 522 i 524.
Od zwykłego timeoutu w programie 504 różni się tym, że odpowiedź jednak przyszła – to po prostu komunikat pośrednika, że nie doczekał się odpowiedzi.
Przyczyny
- Strona przetwarza żądanie zbyt długo. Ciężki raport, eksport, wyszukiwanie bez ograniczeń – serwer strony nie mieści się w czasie, który daje mu pośrednik.
- Strona jest przeciążona lub niedostępna. Pośrednik przed stroną nie może dotrzeć do serwera z danymi.
- Wolny adres wyjściowy. Adresy rezydencjalne i mobilne to urządzenia w domowym i mobilnym internecie, a ich prędkość bywa różna.
- Duża objętość odpowiedzi. Duże pliki i strony przesyłają się dłużej, niż przewidują ustawienia pośrednika.
Jak to naprawić
- Powtórz żądanie za minutę: 504 często jest tymczasowy.
- Otwórz stronę bez proxy. Jeśli i tam jest 504, problem leży po stronie serwisu i proxy go nie naprawi.
- Spójrz na stronę błędu: wygląd Cloudflare wskazuje na stronę za Cloudflare – wtedy zobacz błąd 524 i 522.
- Zmniejsz objętość pojedynczego żądania: strony wyników, filtry według daty, eksport w częściach.
- Przy stałym IP zmień sesję – weź inny port z zakresu 10000–20000, jeśli obecny adres odpowiada wolno.
- Porównaj z timeoutem proxy: jeśli program sam zrywa połączenie, bez kodu 504, przyczyna jest inna.
Jak sprawdzić, czy działa
W sprawdzarce proxy widać czas odpowiedzi adresu. Jeśli proxy odpowiada szybko, a 504 przychodzi tylko z jednej strony i tylko przy ciężkich żądaniach, opóźnienie leży po stronie serwisu.
Diagnoza w 2 minuty
Najpierw wklej linię do sprawdzania proxy. Jeśli tam proxy działa, przyczyna leży w programie lub jego ustawieniach. Jeśli nie - sprawdź linię z terminala:
curl -v -x "http://LOGIN:HASŁO@gw.prokso.com:823" https://api.ipify.org
- Wiersz
< HTTP/1.1 407zaraz poCONNECToznacza, że odpowiada proxy. Nazwa po kodzie, na przykładNO_USER, wskazuje przyczynę. - Proxy odpowiedziało na
CONNECTkodem 200, a potem przyszedł inny kod - proxy działa, tę odpowiedź dała strona. - Brak odpowiedzi, tylko przekroczony czas - połączenie nie dotarło do proxy: sprawdź host, port i sieć.
Pytania i odpowiedzi (FAQ)
Czy 504 to błąd proxy?
Niekoniecznie. Kod wysyła ten pośrednik, który nie doczekał się odpowiedzi. Często jest to serwer przed samą stroną, a nie proxy.
Czym 504 różni się od 502?
502 oznacza, że pośrednik otrzymał od kolejnego serwera nieprawidłową odpowiedź lub nie mógł się z nim połączyć. 504 – że odpowiedź nie nadeszła na czas. O błędzie 502 – na <a href="/pl/errors/502-bad-gateway">osobnej stronie</a>.
Czy pomoże zwiększenie limitu czasu w programie?
Limit czasu w programie nie wpływa na pośrednika, który już odpowiedział 504. Pomaga tylko wtedy, gdy program sam przerywa oczekiwanie wcześniej, niż nadchodzi odpowiedź.
Inne błędy proxy
Rezydencjalne $1.59, mobilne $2.50, serwerowe $0.65 za 1 GB
Rejestracja w minutę, dostęp od razu po płatności.