Timeout del proxy in curl: individuare il passaggio fallito
Distingui connessione al proxy, negoziazione del tunnel, TLS e risposta bloccata per usare i timeout di curl nella diagnosi.
Individua l’ultima operazione completata nell’output dettagliato di curl. «Connessione al proxy riuscita, ma nessuna risposta CONNECT» circoscrive il problema molto più di «timeout del proxy».
Usa una richiesta con limiti di tempo, sostituendo l’esempio locale con il tuo proxy HTTP; nell’elenco dei proxy HTTP puoi trovare altri endpoint da confrontare:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/--connect-timeout 5 assegna un unico tempo massimo all’instaurazione della connessione, comprese le ricerche e le negoziazioni applicabili; non assegna cinque secondi a ogni fase. --max-time 15 limita l’intera operazione, incluso il trasferimento successivo all’instaurazione.
| Dove si ferma l’avanzamento | Cosa verificare dopo |
|---|---|
| Nessuna connessione al proxy | Risoluzione del nome del proxy, porta in ascolto, instradamento e regole del firewall. |
| Proxy connesso; nessuna risposta al tunnel | Carico del proxy, negoziazione dell’autenticazione, criteri di accesso e raggiungibilità della destinazione dal proxy. |
| Tunnel accettato; TLS incompleto | Raggiungibilità della destinazione, negoziazione TLS e intercettazione gestita. |
| Arrivano le intestazioni della destinazione; il corpo si blocca | Comportamento di trasferimento del server di origine, buffering intermedio ed eventuale silenzio intenzionale dell’applicazione. |
Per l’ordine delle negoziazioni, vedi come CONNECT trasporta HTTPS. Un arresto vicino al limite di connessione suggerisce un problema di instaurazione; un arresto successivo al limite complessivo suggerisce un trasferimento incompleto. Considera insieme sequenza e tempi: il tempo da solo non identifica il componente. I messaggi cambiano tra le build di curl e una porta TCP aperta non dimostra che CONNECT funzioni.
Mantieni invariato un lato
Confronta la stessa destinazione tramite un percorso diretto consentito:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Poi confronta un’altra destinazione innocua attraverso lo stesso proxy. Se ne fallisce solo una, esamina quel percorso o i criteri della destinazione. Se tutte si fermano nello stesso passaggio di instaurazione, esamina il percorso comune del proxy. Salva ora di inizio, endpoint, destinazione e ultima fase completata; rimuovi credenziali, token, cookie e nomi privati prima di condividere i log.
Quando la connessione resta aperta senza progressi utili
Un trasferimento di file può richiedere una soglia di bassa velocità oltre ai limiti di connessione e durata totale:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/Questo interrompe l’operazione se la velocità sostenuta resta sotto 100 byte al secondo per 20 secondi, mantenendo un limite complessivo di 60 secondi. Scegli valori adatti al lavoro. Un flusso di eventi può essere sano durante lunghe pause; una regola per i download potrebbe quindi interromperlo erroneamente.
Aumentare tutti i limiti rimanda il sintomo. Tentativi immediati e ripetuti possono aggiungere connessioni a un percorso sovraccarico. Diagnostica con pochi confronti mirati; ogni successiva strategia di ritentativo dell’applicazione richiede un proprio limite complessivo e una valutazione della sicurezza della ripetizione.