# 504 Gateway Timeout przez proxy: przyczyny i rozwiązania

> 504 Gateway Timeout oznacza, że gateway czekał zbyt długo na serwer za nim. Przyczyny z residential proxy, ustawienia timeoutów i rady dotyczące ponawiania.

- URL: https://crawlrelay.com/pl/docs/errors/504-gateway-timeout/
- Ostatnia aktualizacja: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Kod HTTP (5xx, błąd serwera): dokładny komunikat w każdym narzędziu, możliwe przyczyny w kolejności oraz działające rozwiązanie.

**Szybka odpowiedź — Co oznacza 504 Gateway Timeout w kontekście proxy?**

**504 Gateway Timeout** oznacza, że gateway, np. proxy lub CDN strony, czekał za długo na kolejny serwer i się poddał. Przy residential proxy CrawlRelay wolne ogniwo to zwykle cel lub domowe łącze wyjścia. Ponów raz na nowym wyjściu, utrzymuj lekkie strony i ustaw własne timeouty klienta, by wolne żądanie zakończyło się na Twoich warunkach.

## 504 Gateway Timeout w skrócie

| Atrybut | Wartość |
| --- | --- |
| Błąd | 504 Gateway Timeout |
| Typ | Kod HTTP (5xx, błąd serwera) |
| Wysłane przez | Proxy gateway lub CDN przed celem |
| Zdefiniowano w | RFC 9110, section 15.6.5 |
| Spróbować ponownie? | Tak, raz lub dwa razy na nowym wyjściu |
| Najpierw sprawdź | Zmierz ten sam request bez proxy |

## Co oznacza 504 Gateway Timeout?

RFC 9110 definiuje 504 jako gateway, który nie otrzymał na czas odpowiedzi od serwera upstream, którego potrzebował. To timeout-owy brat błędu 502: 502 to zła odpowiedź, 504 to brak odpowiedzi na czas.

Proxy residential dodaje dodatkowy skok, którego nie ma bezpośrednie żądanie: ruch idzie do bramki, potem do domowego łącza, potem do strony. Każdy skok dodaje opóźnienie, a najwolniejszy decyduje o czasie całkowitym.

## Jak wygląda a 504 w Python, curl, Node.js i przeglądarkach?

Ten sam błąd wyświetla się inaczej w każdym narzędziu. Oto komunikaty, które warto wyszukać w logach:

- **Python requests:** `status_code == 504`, lub `Tunnel connection failed: 504 Gateway Timeout` dla HTTPS
- **curl:** `curl: (56) CONNECT tunnel failed, response 504`
- **Scrapy:** domyślnie ponawia (504 jest w `RETRY_HTTP_CODES`)
- **Strony serwowane przez CDN:** strona błędu CDN ze statusem 504

## Co powoduje a 504?

Najczęściej na początku:

- **Wolny cel**, np. strona wyszukiwania budująca się długo.
- **Wolne wyjście**, np. słabe łącze domowe lub zatłoczona komórka.
- **Duże odpowiedzi**, które zajmują więcej czasu niż cierpliwość gateway.
- **Timeout serwera oryginalnego** stronicy za CDN, który wtedy odpowiada 504.

## Jak krok po kroku zdiagnozować a 504?

1. Zmierz request bez proxy. Jeśli w domu też jest wolno, to cel jest wolny.
2. Ponów na nowym wyjściu i porównaj czasy.
3. Sprawdź rozmiar odpowiedzi: 5 MB to inny problem niż 50 KB.
4. Przeczytaj treść, aby zobaczyć, czy stronę błędu wygenerował CDN czy proxy.

*Przetestuj nie działający URL za pomocą curl (port HTTP, tryb verbose)*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## Jak naprawić a 504?

- **Ustaw jawne timeouty**: około 10 sekund na połączenie i 30–60 sekund na odczyt dla zwykłych stron.
- **Ponów na nowym wyjściu** raz lub dwa razy.
- **Żądaj mniej:** pomiń obrazki i multimedia, jeśli potrzebujesz tylko HTML lub JSON API za stroną.
- **Planuj ciężkie strony** na godziny poza szczytem dla kraju celu.

*Python httpx: jawne ustawienie limitów connect, read, write i pool*

```python
import httpx

proxy = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)

with httpx.Client(proxy=proxy, timeout=timeout) as client:
    try:
        r = client.get("https://api.ipify.org")
        print(r.status_code, r.text)
    except httpx.TimeoutException as exc:
        print("timed out:", type(exc).__name__)  # ConnectTimeout, ReadTimeout...
```

## Czy warto ponawiać próbę po a 504?

Ponów próbę 504 raz lub dwa razy na świeżym wyjściu, z krótką przerwą. Jeśli ten sam URL przekracza limit czasu na kilku wyjściach, cel jest wolny lub przeciążony: zmniejsz częstotliwość zapytań do tego hosta lub spróbuj później. Zwiększenie limitu czasu klienta pomaga tylko wtedy, gdy limit bramki nie jest przyczyną.

## Jak 504 Gateway Timeout odnosi się do CrawlRelay?

Każde nowe połączenie do CrawlRelay bez ID sesji zwykle trafia na inne mieszkanie wyjściowe, więc ponowne próby to test innego połączenia domowego. Dla wolnych celów zachowuj małe ładunki i mierz czas do pierwszego bajtu osobno od całkowitego czasu pobierania.

Gateway: `gw.crawlrelay.com`, port 7777 (HTTP, HTTPS przez CONNECT) i port 7778 (SOCKS5). Format nazwy użytkownika: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Powiązane: [502 Bad Gateway](https://crawlrelay.com/pl/docs/errors/502-bad-gateway/) · [Read timed out](https://crawlrelay.com/pl/docs/errors/read-timeout/) · [503 Service Unavailable](https://crawlrelay.com/pl/docs/errors/503-service-unavailable/).

## 504 Gateway Timeout: pytania, które zadają deweloperzy

### Jaka jest różnica między 502 a 504?

Oba pochodzą z bramki. 502 oznacza, że serwer za nią wysłał nieprawidłową odpowiedź lub zerwał połączenie. 504 oznacza, że nic nie wysłał w czasie. Przy residential proxy 502 często oznacza zerwane wyjście, a 504 wolny cel lub wolne połączenie domowe.

### Czy mogę zwiększyć limit czasu proxy?

Kontrolujesz limity czasu klienta, nie wewnętrzne bramki. Ustaw wyraźnie limity nawiązywania i odczytu, aby wolne zapytania kończyły się przewidywalnie, ponawiaj na nowym wyjściu i upraszczaj strony. Jeśli cel potrzebuje bardzo długich odpowiedzi, pobierz jego API lub lżejszą stronę.

### Czy mobilne proxy są wolniejsze od residential?

Mogą, ponieważ mobilne wyjście dzieli sieć komórkową z innymi użytkownikami, a jego prędkość zmienia się wraz z sygnałem i obciążeniem. Używaj mobilnych IP do celów tego wymagających, a residential do masowego crawlignu. Mierz swoje czasy odpowiedzi według typu wyjścia, zanim zdecydujesz.

## Inne błędy proxy w tym odniesieniu

- [401 Unauthorized vs 407](https://crawlrelay.com/pl/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/pl/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/pl/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/pl/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/pl/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/pl/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/pl/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/pl/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/pl/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/pl/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/pl/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/pl/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/pl/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/pl/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/pl/docs/errors/ssl-wrong-version-number/)

**Proxy rezydencjalne z dokumentacją opisującą przypadki błędów** CrawlRelay proxy rezydencjalne od 0,50 USD/GB, ruch, który nigdy nie wygasa. [Zobacz ceny](https://crawlrelay.com/pl/pricing/) · [Szybki start](https://crawlrelay.com/pl/docs/)

---

CrawlRelay: CrawlRelay to serwis proxy rezydencjalne i mobilne proxy 4G/5G z rotacją, stworzony dla programistów i potoków danych AI: ruch bez wygasania w modelu pay-as-you-go od 0,50 USD/GB, płatny w kryptowalutach, bez konieczności przesyłania dokumentów. Bez KYC — brak dowodu, selfie i dokumentów. Płać w kryptowalutach.
