# 504 Gateway Timeout tramite proxy: cause e soluzioni

> 504 Gateway Timeout significa che un gateway ha aspettato troppo per il server dietro. Cause con proxy residentiali, impostazioni timeout e consigli per il retry.

- URL: https://crawlrelay.com/it/docs/errors/504-gateway-timeout/
- Ultimo aggiornamento: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Codice di stato HTTP (5xx, errore server): il messaggio esatto in ogni strumento, le cause probabili in ordine e la soluzione che funziona.

**Risposta rapida — Cosa significa 504 Gateway Timeout con un proxy?**

**504 Gateway Timeout** significa che un gateway, come il proxy o il CDN del sito, ha atteso troppo per il server successivo e ha rinunciato. Tramite proxy residentiali CrawlRelay, il collo di bottiglia è solitamente il target o la connessione domestica dell’exit. Riprova una volta su un exit nuovo, tieni leggere le pagine e imposta timeout client per far fallire in modo controllato una richiesta lenta.

## 504 Gateway Timeout a colpo d'occhio

| Attributo | Valore |
| --- | --- |
| Errore | 504 Gateway Timeout |
| Tipo | Codice di stato HTTP (5xx, errore server) |
| Inviato da | Il gateway proxy o un CDN davanti al target |
| Definito in | RFC 9110, section 15.6.5 |
| Riprovarlo? | Sì, una o due volte su un nuovo exit |
| Prima verifica | Cronometra la stessa richiesta senza proxy |

## Cosa significa 504 Gateway Timeout?

La RFC 9110 definisce 504 come un gateway che non ha ricevuto una risposta tempestiva dal server a monte necessario. È il fratello timeout del 502: 502 significa risposta errata, 504 significa nessuna risposta in tempo.

Un proxy residential aggiunge un passaggio che una richiesta diretta non ha: il traffico passa al gateway, poi a una connessione domestica, poi al sito. Ogni passaggio aggiunge ritardo, e quello più lento decide il totale.

## Com'è a 504 in Python, curl, Node.js e browser?

Lo stesso errore si presenta in modo diverso in ogni strumento. Questi sono i messaggi da cercare nei log:

- **Python requests:** `status_code == 504`, o `Tunnel connection failed: 504 Gateway Timeout` per target HTTPS
- **curl:** `curl: (56) CONNECT tunnel failed, response 504`
- **Scrapy:** ritenta di default (504 in `RETRY_HTTP_CODES`)
- **Siti serviti da CDN:** una pagina errore dal CDN con stato 504

## Cosa causa a 504?

Probabilmente prima:

- **Un target lento**, per esempio una pagina di ricerca che impiega molti secondi a elaborare.
- **Un exit lento**, come una connessione domestica debole o una cella mobile congestionata.
- **Risposte grandi** che impiegano più tempo della pazienza del gateway.
- **Timeout dell’origine del sito** dietro il suo CDN, che risponde 504.

## Come diagnostico a 504 passo dopo passo?

1. Cronometra la richiesta senza proxy. Se anche da casa è lenta, il target è lento.
2. Riprova su un exit nuovo e confronta i tempi.
3. Controlla la dimensione della risposta: una pagina da 5 MB è un problema diverso da una da 50 KB.
4. Leggi il corpo per capire se la pagina errore è del CDN o del proxy.

*Testa l'URL che fallisce con curl (porta HTTP, 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
```

## Come risolvo a 504?

- **Imposta timeout espliciti**: circa 10 secondi per la connessione e da 30 a 60 per leggere pagine normali.
- **Riprova su un exit nuovo** una o due volte.
- **Richiedi meno**: salta immagini e media se ti serve solo l’HTML o l’API JSON dietro la pagina.
- **Programma le pagine pesanti** in orari non di punta per il paese target.

*Python httpx: timeout espliciti per connect, read, write e 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...
```

## Devo riprovare dopo a 504?

Riprova un 504 una o due volte su una nuova exit, con un breve backoff. Se lo stesso URL scade su più exit, il target è lento o sovraccarico: riduci il ritmo su quell'host o prova più tardi. Aumentare il timeout client aiuta solo se il timeout del gateway non è il limite.

## Come si applica 504 Gateway Timeout a CrawlRelay?

Ogni nuova connessione a CrawlRelay senza un ID di sessione di solito ottiene una exit residenziale diversa, quindi un retry normalmente prova un'altra connessione home. Per i target lenti, mantieni piccoli i payload e misura il tempo al primo byte separatamente dal tempo totale di download.

Gateway: `gw.crawlrelay.com`, porta 7777 (HTTP, HTTPS tramite CONNECT) e porta 7778 (SOCKS5). Formato username: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. Correlato: [502 Bad Gateway](https://crawlrelay.com/it/docs/errors/502-bad-gateway/) · [Read timed out](https://crawlrelay.com/it/docs/errors/read-timeout/) · [503 Service Unavailable](https://crawlrelay.com/it/docs/errors/503-service-unavailable/).

## 504 Gateway Timeout: domande frequenti dagli sviluppatori

### Qual è la differenza tra 502 e 504?

Entrambi vengono da un gateway. Un 502 significa che il server dietro ha inviato una risposta non valida o ha chiuso la connessione. Un 504 significa che non ha inviato nulla in tempo. Con i proxy residenziali, 502 spesso indica un'exit caduta, e 504 un target lento o una connessione home lenta.

### Posso aumentare il timeout del proxy?

Tu controlli i timeout del client, non quelli interni del gateway. Imposta esplicitamente connect e read timeout così le richieste lente falliscono prevedibilmente, ritenti su una nuova exit e rendi le pagine più leggere. Se un target richiede risposte molto lunghe, prendi la sua API o una pagina più leggera invece.

### I proxy mobili sono più lenti di quelli residenziali?

Possono esserlo, perché un'exit mobile condivide una cella con altri utenti e la sua velocità cambia con il segnale e il carico. Usa IP mobili per target che ne hanno bisogno e IP residenziali per crawls bulk. Misura i tuoi tempi di risposta per tipo di exit prima di decidere.

## Altri errori proxy in questo riferimento

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

**Proxy residenziali con documentazione che copre i casi di errore** Proxy residenziali CrawlRelay da 0,50 USD/GB, traffico che non scade mai. [Vedi i prezzi](https://crawlrelay.com/it/pricing/) · [Avvio rapido](https://crawlrelay.com/it/docs/)

---

CrawlRelay: CrawlRelay è un servizio di proxy residenziali rotanti e proxy mobili 4G/5G primo per sviluppatori: traffico pay-as-you-go senza scadenza da 0,50 USD/GB, pagato in crypto, senza caricamento documenti. Senza KYC — niente documento, selfie o altri documenti. Paga in crypto.
