Che cos'è un proxy inverso e come funziona?

Pubblicato: 2022-08-09
Server collegati su una mappa del mondo.
Artemis Diana/Shutterstock.com

I proxy inversi sono uno strumento utile nel toolkit di qualsiasi amministratore di sistema. Hanno molti usi, incluso il bilanciamento del carico, la protezione dagli attacchi DDOS

Cosa sono i proxy inversi?

Un proxy normale, chiamato Forward Proxy, è un server attraverso il quale viene instradata la connessione di un utente. In molti modi, è come una semplice VPN, che si trova davanti alla tua connessione Internet. Le VPN ne sono un esempio comune, ma includono anche cose come i firewall scolastici, che possono bloccare l'accesso a determinati contenuti.

Un proxy inverso funziona in modo leggermente diverso. È uno strumento di back-end utilizzato dagli amministratori di sistema. Invece di connettersi direttamente a un sito Web che offre contenuti, un proxy inverso come NGINX può sedersi nel mezzo. Quando riceve una richiesta da un utente, invierà l'inoltro, o "proxy", quella richiesta al server finale. Questo server è chiamato "server di origine" poiché è ciò che risponderà effettivamente alle richieste.

Mentre un utente probabilmente saprà se viene instradato attraverso un proxy forward come una VPN o un firewall, i proxy inversi sono strumenti di back-end. Per quanto ne sa l'utente, si stanno semplicemente connettendo a un sito web. Tutto dietro il proxy inverso è nascosto e anche questo ha numerosi vantaggi.

Questo effetto si verifica anche al contrario però. Il server di origine non ha una connessione diretta con l'utente e vedrà solo una serie di richieste provenienti dall'IP del proxy inverso. Questo può essere un problema, ma la maggior parte dei servizi proxy come NGINX aggiungerà intestazioni come X-Forwarded-For alla richiesta. Queste intestazioni informeranno il server di origine dell'indirizzo IP effettivo del client.

A cosa servono i proxy inversi?

I proxy inversi sono concettualmente piuttosto semplici, ma si rivelano uno strumento sorprendentemente utile con molti casi d'uso imprevisti.

Bilancio del carico

Uno dei principali vantaggi di un proxy inverso è quanto possono essere leggeri. Dal momento che inoltrano semplicemente le richieste, non devono eseguire molte elaborazioni, specialmente nelle situazioni in cui è necessario interrogare un database.

Come configurare un bilanciatore di carico HAProxy
CORRELATI Come configurare un bilanciamento del carico HAProxy

Ciò significa che il collo di bottiglia è spesso il server di origine, ma con un proxy inverso di fronte, puoi facilmente avere più server di origine. Ad esempio, il proxy potrebbe inviare il 50% delle richieste a un server e il 50% a un altro, raddoppiando la capacità del sito web. Servizi come HAProxy sono progettati per gestirlo bene.

Questo è un caso d'uso molto comune e la maggior parte dei fornitori di servizi cloud come Amazon Web Services (AWS) offrirà il bilanciamento del carico come servizio, risparmiandoti la fatica di configurarlo da solo. Con l'automazione del cloud, puoi persino aumentare automaticamente il numero di server di origine in risposta al traffico, una funzionalità chiamata "ridimensionamento automatico".

I sistemi di bilanciamento del carico come Elastic Load Balancer di AWS possono essere configurati per riconfigurarsi automaticamente quando i server di origine salgono e scendono, il tutto reso possibile da un proxy inverso nascosto.

CORRELATI: Come iniziare con i bilanciatori di carico elastici di AWS

Memorizzazione nella cache

Poiché un proxy inverso è spesso molto più veloce nel rispondere rispetto al server di origine, una tecnica chiamata memorizzazione nella cache viene comunemente utilizzata per accelerare le richieste su percorsi comuni. La memorizzazione nella cache è quando i dati della pagina vengono archiviati sul proxy inverso e richiesti dal server di origine solo una volta ogni pochi secondi/minuti. Ciò riduce drasticamente lo sforzo sul server di origine.

Ad esempio, questo articolo che stai leggendo ora è stato pubblicato da WordPress, che ha bisogno di parlare con un database SQL per recuperare il contenuto dell'articolo e i metadati. Farlo per ogni aggiornamento della pagina è uno spreco considerando che la pagina non cambia davvero. Quindi, questo percorso può essere memorizzato nella cache e il proxy inverso invierà semplicemente l'ultima risposta all'utente successivo, anziché disturbare nuovamente WordPress.

Una rete dedicata di proxy inversi che memorizza nella cache i tuoi contenuti è chiamata Content Delivery Network o CDN. CDN come CloudFlare o Fastly sono molto comunemente utilizzati dai grandi siti Web per accelerare la consegna globale. I server in tutto il mondo che memorizzano nella cache il contenuto sono chiamati "nodi edge" e averne molti può rendere il tuo sito Web molto scattante.

Protezione della rete e privacy

Poiché l'utente non sa cosa c'è dietro il proxy inverso, non sarà in grado di attaccare facilmente i tuoi server di origine direttamente. In effetti, i proxy inversi sono comunemente usati con i server di origine in sottoreti private, il che significa che non hanno alcuna connessione in entrata a Internet esterna.

Ciò mantiene la tua configurazione di rete privata e, sebbene la sicurezza attraverso l'oscurità non sia mai infallibile, è meglio che lasciarla aperta agli attacchi.

Questa fiducia intrinseca può essere utile anche durante la pianificazione della rete. Ad esempio, un server API che comunica con un database è simile a un proxy inverso. Il database sa di potersi fidare del server API nella sottorete privata e il server API funge da firewall per il database, consentendo solo le giuste connessioni attraverso di esso.

Frontend configurabile

Uno dei vantaggi dei proxy inversi come NGINX è quanto siano altamente configurabili. Spesso sono utili da avere davanti ad altri servizi solo per configurare il modo in cui gli utenti accedono a tali servizi.

Ad esempio, NGINX è in grado di limitare le richieste a determinate rotte, il che può impedire a chi effettua abusi di fare migliaia di richieste ai server di origine da un singolo IP. Questo non ferma gli attacchi DDOS, ma è bello averlo.

NGINX è anche in grado di inoltrare il traffico da più nomi di dominio con blocchi "server" configurabili. Ad esempio, potrebbe inviare richieste a example.com al tuo server di origine, ma inviare api.example.com al tuo server API speciale o files.example.com al tuo archivio di file e così via. Ogni server può avere la propria configurazione e regole.

NGINX è anche in grado di aggiungere funzionalità extra oltre ai server di origine esistenti, come i certificati HTTPS centralizzati e la configurazione dell'intestazione.

A volte, è utile avere NGINX sulla stessa macchina di un altro servizio locale, semplicemente per servire il contenuto di quel servizio. Ad esempio, le API Web ASP.NET utilizzano un server Web interno chiamato Kestrel, che è in grado di rispondere alle richieste, ma non molto altro. È molto comune eseguire Kestrel su una porta privata e utilizzare NGINX come proxy inverso configurabile.

Registrazione centralizzata

Questo è piuttosto semplice, ma avere la maggior parte del tuo traffico che passa attraverso un servizio rende facile controllare i registri. Il registro di accesso di NGINX contiene molte informazioni utili sul tuo traffico e, sebbene non batta le funzionalità di un servizio come Google Analytics, è un'ottima informazione da avere.

CORRELATI: Come impostare un pannello di analisi e monitoraggio Elasticsearch per la tua azienda