Una CDN (Content Delivery Network) è una rete di server distribuiti in molte località che si mette tra i visitatori e il server del tuo sito, chiamato origine. Invece di far viaggiare ogni richiesta fino all'origine, la CDN serve i contenuti da un nodo vicino all'utente. Il risultato è un sito più rapido, un'origine meno sollecitata e, spesso, una protezione in più contro il traffico anomalo.
Il principio: avvicinare i contenuti
La distanza conta. Una richiesta che attraversa un continente impiega decine di millisecondi solo per il tragitto, e una pagina moderna ne richiede molte: HTML, fogli di stile, script, immagini, font. Ogni scambio aggiunge ritardo.
La CDN ha nodi, detti edge o PoP (Point of Presence), in molte città. Quando un visitatore di Palermo apre un sito ospitato in Germania, la richiesta può fermarsi a un nodo in Italia. Se quel nodo ha già una copia del file, risponde subito; altrimenti la recupera dall'origine, la consegna e la conserva per i visitatori successivi.
Come la CDN si inserisce nel percorso
Esistono due modalità principali:
- Tramite DNS: si fa puntare il dominio, o un sottodominio, alla CDN con un record CNAME, oppure si delega l'intera zona DNS al provider della CDN. Da quel momento i visitatori parlano con la CDN, che a sua volta contatta l'origine.
- Tramite sottodominio dedicato: solo i file statici vengono serviti da un nome separato, come
static.esempio.it, mentre le pagine dinamiche arrivano direttamente dall'origine.
Molte CDN usano l'anycast: lo stesso indirizzo IP viene annunciato da tanti nodi nel mondo, e l'instradamento di Internet porta ciascun utente al nodo topologicamente più vicino.
Cosa si mette in cache e per quanto
La CDN decide cosa conservare in base alle regole che configuri e alle intestazioni HTTP inviate dall'origine. Le più importanti:
| Intestazione | Esempio | Significato |
|---|---|---|
| Cache-Control | public, max-age=86400 |
Può essere conservato da tutti per un giorno |
| Cache-Control | private, no-store |
Non va conservato dalle cache condivise |
| Cache-Control | s-maxage=600 |
Durata specifica per le cache condivise come la CDN |
| ETag / Last-Modified | valore o data | Permettono di verificare se il file è cambiato |
Una pratica efficace è dare ai file statici un nome che cambia a ogni versione, per esempio stile.3f9a1c.css, e impostare una durata di cache molto lunga. Quando il file cambia, cambia anche il nome, e la cache non crea problemi.
Attenzione ai contenuti personali
Le pagine che contengono dati dell'utente (area riservata, carrello, pannello di amministrazione) non devono mai finire nella cache condivisa. Una configurazione sbagliata può mostrare a un visitatore la pagina personale di un altro. Escludi esplicitamente questi percorsi e verifica che le risposte con cookie di sessione siano marcate come private.
Svuotare la cache
Quando aggiorni un contenuto senza cambiarne il nome, devi chiedere alla CDN di rimuoverlo dalla cache (operazione chiamata purge). Quasi tutte le CDN permettono di svuotare un singolo indirizzo, un gruppo di file o tutto. Svuotare tutto è comodo ma fa arrivare all'origine, per qualche minuto, un picco di richieste.
I vantaggi oltre la velocità
- Riduzione del carico sull'origine: la maggior parte delle richieste di file statici si ferma ai nodi edge.
- Assorbimento dei picchi: un articolo che diventa virale non mette in ginocchio un piccolo server.
- Protezione da attacchi di negazione del servizio: la capacità di rete della CDN è enormemente superiore a quella di un server singolo, e molti provider filtrano il traffico anomalo.
- Certificati TLS gestiti: molte CDN rilasciano e rinnovano automaticamente i certificati per il tuo dominio.
- Nascondere l'origine: se l'indirizzo dell'origine non è pubblico e il server accetta solo traffico dalla CDN, è più difficile attaccarlo direttamente.
Su quest'ultimo punto, un errore comune è proteggere il sito con la CDN e lasciare l'origine raggiungibile da chiunque conosca il suo indirizzo IP, magari ancora visibile in vecchi record DNS. Configura il firewall dell'origine per accettare connessioni web solo dagli intervalli di indirizzi della CDN o tramite un tunnel autenticato.
Quando non serve
Una CDN porta pochi benefici a un servizio usato solo da una rete locale, a un'applicazione interna aziendale o a un sito con pubblico concentrato nella stessa città del server. Aggiunge inoltre un intermediario che vede il traffico in chiaro, perché termina la connessione TLS: è un aspetto da valutare quando il sito tratta dati riservati.
In sintesi
- Una CDN serve i contenuti da nodi vicini agli utenti, riducendo latenza e carico sull'origine.
- Si attiva tramite DNS, spesso con anycast per indirizzare ciascuno al nodo più vicino.
- Le intestazioni Cache-Control determinano cosa viene conservato e per quanto tempo.
- Escludi sempre dalla cache le pagine personali e proteggi l'origine dall'accesso diretto.
- Non tutti i siti ne hanno bisogno: valuta pubblico, tipo di contenuti e riservatezza.