Cos'è un proxy inverso?
Un reverse proxy è un server che si trova di fronte ai server Web e inoltra le richieste del client (ad esempio, browser Web) a tali server Web. I reverse proxy vengono in genere implementati per aumentare la sicurezza, le prestazioni e l'affidabilità. Per capire meglio come funziona un reverse proxy e i vantaggi che può offrire, definiamo innanzitutto cos'è un server proxy.
Report
2024 GigaOm Radar per CDN
Whitepaper
Tre problemi relativi alla protezione e alla connessione dei servizi applicativi
Cos'è un server proxy?
Un proxy di inoltro, spesso chiamato proxy, server proxy o proxy Web, è un server che si posiziona di fronte a un gruppo di macchine client. Quando tali computer effettuano richieste a siti e servizi su Internet, il server proxy intercetta tali richieste e quindi comunica con i server Web per conto di tali client, come un intermediario.
Facciamo l'esempio di tre computer coinvolti in una tipica comunicazione di proxy di inoltro:
- A: il computer domestico di un utente
- B: un server proxy di inoltro
- C: il server di origine di un sito Web (dove sono archiviati i dati del sito Web)
In una comunicazione Internet standard, il computer A raggiunge direttamente il computer C, con il client che invia richieste al server di origine e il server di origine che risponde al client. Quando è attivo un proxy di inoltro, A invierà le richieste a B, che inoltrerà la richiesta a C. C invierà quindi una risposta a B, che inoltrerà la risposta ad A.
CDN ultraveloce
Migliora le prestazioni con la CDN di Cloudflare
Perché aggiungere questo ulteriore intermediario alle proprie attività su Internet? I proxy di inoltro possono essere utilizzati per vari motivi:
- Per evitare restrizioni di navigazione statali o istituzionali: alcuni governi, scuole e altre organizzazioni utilizzano firewall per fornire ai propri utenti l'accesso a una versione limitata di Internet. Un proxy di inoltro può essere utilizzato per aggirare queste restrizioni, poiché consentono di connettersi al proxy anziché direttamente ai siti visitati.
- Per bloccare l'accesso a determinati contenuti: al contrario, tali proxy possono essere utilizzati anche per impedire a un gruppo di utenti di accedere a determinati siti. Ad esempio, una rete scolastica potrebbe essere configurata per connettersi al Web tramite un proxy che abilita regole di filtraggio dei contenuti, rifiutandosi di inoltrare risposte da Facebook e altri siti di social media.
- Per proteggere la propria identità online: in alcuni casi, i comuni utenti di Internet desiderano semplicemente un maggiore anonimato online; in altri casi, invece, vivono in luoghi in cui i governi possono imporre gravi sanzioni ai dissidenti politici. Criticare il governo su un forum Web o sui social media può comportare sanzioni o persino la reclusione per tali utenti. Se uno di questi dissidenti utilizza un proxy di inoltro per connettersi a un sito Web in cui pubblica commenti politicamente sensibili, l'indirizzo IP associato ai commenti sarà più difficile da ricondurre al dissidente. Sarà visibile solo l'indirizzo IP del server proxy.
In cosa differisce un reverse proxy ?
Un reverse proxy è un server che si posiziona di fronte a uno o più server Web per intercettare le richieste dal client. Differisce da un proxy di inoltro perché quest'ultimo si posiziona di fronte ai client. Con un reverse proxy, quando il client invia richieste al server di origine di un sito Web, tali richieste vengono intercettate al livello del perimetro di rete dal server del reverse proxy. Il server del reverse proxy invia quindi richieste e riceve le risposte dal server di origine.
La differenza tra un proxy di inoltro e un reverse proxy è sottile ma importante. In parole povere, un proxy di inoltro si posiziona di fronte a un client e garantisce che nessun server di origine comunichi direttamente con quel client specifico, in alcun caso. Un reverse proxy, invece, si posiziona di fronte a un server di origine e garantisce che nessun client comunichi direttamente con quel server di origine, in alcun caso.
Anche in questo caso, possiamo proporre un esempio con alcuni computer coinvolti:
- D: qualsiasi numero di computer domestici degli utenti
- E: un server del reverse proxy
- F: uno o più server di origine
In genere tutte le richieste provenienti da D vengono indirizzate direttamente a F e F invia le risposte direttamente a D. Con un reverse proxy, tutte le richieste provenienti da D vengono indirizzate direttamente a E ed E invierà le sue richieste a F e riceverà le risposte sempre da F. E trasmetterà quindi le risposte appropriate a D.
Di seguito descriviamo alcuni dei vantaggi di un reverse proxy:
- Bilanciamento del carico: un sito Web popolare visitato ogni giorno da milioni di utenti potrebbe non essere in grado di gestire tutto il traffico del sito in entrata con un unico server di origine. Tuttavia, il sito può essere distribuito tra un pool di server diversi, in cui ogni server gestisce le richieste per lo stesso sito. In questo caso, un reverse proxy può fornire una soluzione di bilanciamento del carico che distribuirà il traffico in entrata in modo uniforme tra i diversi server per evitare il sovraccarico di un singolo server. Nel caso in cui un server si guasti completamente, altri server possono intervenire per gestire il traffico.
- Protezione dagli attacchi: in presenza di un reverse proxy, un sito Web o un servizio non ha mai bisogno di rivelare l'indirizzo IP del proprio server di origine. Di conseguenza, è molto più difficile per gli autori di attacchi sfruttare un attacco mirato contro di loro, ad esempio un attacco DDoS. Gli autori di attacchi saranno invece in grado di prendere di mira solo il reverse proxy, come la CDN di Cloudflare, che è dotata di una sicurezza più solida e un numero maggiore di risorse per respingere un attacco informatico.
- Bilanciamento del carico del server globale (GSLB, Global Server Load Balancing): in questa forma di bilanciamento del carico, un sito Web può essere distribuito su diversi server in tutto il mondo e il reverse proxy invierà i client al server geograficamente più vicino a loro. In questo modo, si riducono le distanze che le richieste e le risposte devono percorrere, riducendo al minimo i tempi di caricamento.
- Caching: un reverse proxy può anche memorizzare nella cache i contenuti, con conseguente miglioramento delle prestazioni. Ad esempio, se un utente a Parigi visita un sito Web con reverse proxy con server Web a Los Angeles, l'utente potrebbe effettivamente connettersi a un server del reverse proxy locale a Parigi, che dovrà quindi comunicare con un server di origine a Los Angeles. Il server proxy può quindi memorizzare nella cache (o salvare temporaneamente) i dati di risposta. Gli utenti parigini successivi che navigheranno nel sito riceveranno quindi la versione memorizzata nella cache locale dal server del reverse proxy parigino, con prestazioni molto più veloci.
- Crittografia SSL: la crittografia e la decrittografia delle comunicazioni SSL (o TLS) per ciascun client può essere costosa dal punto di vista computazionale per un server di origine. Un reverse proxy può essere configurato per decrittografare tutte le richieste in entrata e crittografare tutte le risposte in uscita, liberando preziose risorse sul server di origine.
Come implementare un reverse proxy
Alcune aziende creano il proprio reverse proxy, ma questo richiede numerose risorse di ingegneria software e hardware, nonché un investimento significativo in hardware fisico. Uno dei modi più semplici e convenienti da un punto di vista economico per sfruttare tutti i vantaggi di un reverse proxy è registrarsi a un servizio CDN. Ad esempio, la CDN di Cloudflare fornisce tutte le prestazioni e le funzionalità di sicurezza sopra elencate, oltre a molte altre.