Se, navigando sul Web, incontrate spesso errori 500 o vi compaiono messaggi come connection timed out, sappiate che non si tratta di un problema vostro né, tanto meno, potrebbe essere sinonimo di difficoltà sui server del sito che state cercando di visitare.
L’errore 500, come abbiamo visto, è indizio di un problema lato server Web: un problema di connessione con il database o un errore nello script che viene caricato dal server possono portare alla visualizzazione di questo codice.
Alcuni utenti stanno tuttavia segnalando la comparsa di errori 500 e timeout (la connessione non avviene entro il tempo massimo previsto) su un gran numero di siti italiani. Troppi per essere una semplice coincidenza. Così, con una semplice verifica si è scoperto che il problema è derivato da un’improvvista défaillance di Cloudflare.
Cloudflare è un’azienda statunitense che fornisce una serie di servizi e soluzioni per la gestione, la sicurezza e l’accelerazione delle risorse online, tra cui siti web, applicazioni e infrastrutture di rete. Tanti siti Web italiani, ad esempio, sfruttano il servizio di proxying Cloudflare: esso consente l’accelerazione della consegna dei contenuti (Cloudflare memorizza in cache il contenuto statico del sito Web) nei suoi server distribuiti globalmente e posti vicino ai client. Quando un utente accede al sito, Cloudflare fornisce tali contenuti dalla posizione geograficamente più vicina, riducendo così la latenza e migliorando il tempo di caricamento delle pagine. Cloudflare consente di ottimizzare le risorse pubblicate in pagina, ad esempio riducendo la dimensione dei file statici (comprese le immagini) e si serve del load balancing per distribuire il traffico tra più server Web.
Il servizio proxy Cloudflare protegge anche dalle minacce online filtrando il traffico Web in arrivo e bloccando le eventuali richieste dannose, come quelle avanzate da botnet, bot malevoli e attacchi DDoS. Utilizza algoritmi di rilevamento avanzati per identificare e mitigare automaticamente le minacce, proteggendo il sito web dagli attacchi e garantendo l’accesso solo agli utenti legittimi.
Può succedere, tuttavia, che anche un’infrastruttura così ottimizzata e “a prova di incidenti” come quella di Cloudflare talvolta presenti qualche problema. Oggi, ad esempio, in tanti si sono accorti che l’errore 500 mostrava un riferimento esplicito al noto Web server nginx: anche provando a collegarsi a server remoti che non lo utilizzano.
Com’è possibile? Proprio per il fatto che ad andare temporaneamente in panne è stata l’infrastruttura di Cloudflare, come confermato dalla società nella dashboard pubblica Cloudflare System Status: “Cloudflare is investigating issues with network performance in Milan. We are working to analyze and mitigate this problem“.
Già nelle scorse ore si erano verificati problemi di routing con il data center Cloudflare di Milano e più di recente, sono cominciati a spuntare errori 500 e connection timed out nel tentativo di collegarsi con centinaia di siti Web molto noti.
Un trucco per verificare se ci sono problemi nel raggiungere un sito gestito con Cloudflare
Provate ad aggiungere al nome a dominio di un sito, il percorso /cdn-cgi/trace
nella barra degli indirizzi. Se si ottiene risposta, invece di un errore 404 (indica una pagina inesistente), significa che il sito Web si serve di Cloudflare.
Il file /cdn-cgi/trace
fornisce informazioni relative alla connessione tra il client e il server attraverso il servizio di rete di Cloudflare. Di seguito è riportato il significato di ciascun parametro nel responso del file:
- fl: Un identificativo generato casualmente per la richiesta HTTP;
- h: L’host o il dominio del sito web che ha richiesto il file /cdn-cgi/trace;
- ip: L’indirizzo IP del client che ha effettuato la richiesta;
- ts: Un timestamp che rappresenta il momento in cui è stata elaborata la richiesta;
- visit_scheme: Lo schema utilizzato per la visita, ad esempio “https”;
- uag: L’user agent del browser o del client che ha effettuato la richiesta;
- colo: Il codice di identificazione del data center di Cloudflare che ha gestito la richiesta. MXP indica Milano;
- sliver: Indica la porzione di traffico che attraversa i data center di Cloudflare;
- http: La versione del protocollo HTTP utilizzato per la richiesta;
- loc: La località geografica del client;
- tls: La versione del protocollo di sicurezza TLS utilizzato per la connessione;
- sni: Il nome dell’indicatore del nome del server (Server Name Indication) utilizzato durante la connessione TLS. “plaintext” indica che non è stato utilizzato un nome del server cifrato.
- warp: Indica lo stato del servizio Cloudflare Warp, un servizio di rete VPN;
- gateway: Indica lo stato del servizio Cloudflare Gateway, che è un servizio di sicurezza per il traffico Internet;
- rbi: Indica lo stato del servizio Cloudflare Resolver for Banking Institutions, che è un servizio DNS riservato alle istituzioni bancarie;
- kex: L’algoritmo di scambio delle chiavi crittografiche utilizzato durante la connessione.
L’indicazione di un data center non italiano collegandosi dall’Italia senza l’utilizzo di VPN o la mancata restituzione di tutti i parametri potrebbe essere sintomo di un problema, ad esempio di difficoltà in fase di routing o di un’altra problematica di rete che interessa l’infrastruttura Cloudflare.