Reverse Proxy: funzioni, sicurezza e configurazione su Linux e Windows

Chiariamo il ruolo del reverse proxy, spiegando come differisce da un proxy tradizionale e quali vantaggi offre in termini di sicurezza, bilanciamento del carico, caching e ottimizzazione del traffico.

Quando si parla di reverse proxy, spesso c’è confusione circa il suo ruolo reale. Diversamente rispetto a un proxy tradizionale, un reverse proxy svolge un ruolo molto specifico, che può migliorare sicurezza, scalabilità e gestione del traffico. Il reverse proxy, comunque, non è una bacchetta magica che rende un server invulnerabile: è uno strumento potente che, se usato correttamente, può aumentare significativamente la sicurezza e la gestione del traffico, ma richiede attenzione e consapevolezza.

Cos’è un Reverse Proxy

Un reverse proxy è un server intermedio che riceve le richieste dei client e le inoltra a uno o più server backend, mascherando la struttura interna della rete e gestendo la distribuzione del traffico. A differenza di un forward proxy, che agisce per conto del client al fine di accedere a risorse esterne, il reverse proxy lavora per il server, fungendo da punto di ingresso centralizzato per le richieste provenienti dall’esterno.

Grazie al reverse proxy, è possibile esporre un solo punto di accesso verso Internet invece di aprire direttamente le porte di ciascun servizio. Ad esempio, invece di aprire 20 porte diverse per altrettante applicazioni, basta esporre le porte 80 e 443 del proxy.

Funzioni principali di un reverse proxy

  • Bilanciamento del carico: distribuisce le richieste tra più server backend per ottimizzare le prestazioni e garantire disponibilità.
  • Sicurezza: filtra il traffico dannoso (può integrare firewall applicativi, WAF) e riduce l’esposizione diretta dei server interni.
  • Caching: memorizza contenuti statici per ridurre il carico sui server backend e migliorare i tempi di risposta.
  • SSL/TLS offloading: gestisce la terminazione delle connessioni sicure, alleggerendo i server backend dall’onere della crittografia.
  • Compressione e ottimizzazione del traffico: riduce il consumo di banda e migliora le performance lato client.

Come funziona su Linux

Su Linux, i reverse proxy sono tipicamente implementati con software come Nginx, Apache HTTP Server, HAProxy, Caddy o Traefik. Il funzionamento segue uno schema comune:

  • Il client invia una richiesta HTTP/HTTPS al reverse proxy.
  • Il reverse proxy analizza la richiesta, applica eventuali regole di instradamento e sicurezza.
  • La richiesta è inoltrata a uno o più server backend configurati in rete-
  • La risposta del server backend passa nuovamente dal reverse proxy, che può applicare caching, compressione o riscrittura degli header prima di inviarla al client.

Caddy come Reverse Proxy

Prendiamo in considerazione Caddy, un server Web open source scritto in Go, noto per la sua configurazione semplice e la gestione automatica di certificati SSL/TLS tramite Let’s Encrypt. Può funzionare sia come server Web sia come reverse proxy: lo citiamo perché, ad esempio, funziona senza problemi sia su Linux che su Windows grazie alla sua compatibilità multi-piattaforma.

Funzionalità principali di Caddy

  • Reverse proxy semplice da configurare: la sintassi del file di configurazione Caddyfile è molto intuitiva.
  • SSL/TLS automatico: Caddy ottiene, rinnova e gestisce i certificati automaticamente.
  • Load balancing e controlli live: permette di distribuire le richieste tra più backend e controllarne lo stato.
  • Compressione e caching: supporta la compressione automatica dei contenuti e il caching avanzato.
  • Plug-in e possibilità di personalizzazione: in Caddy si possono aggiungere funzioni tramite plugin, attivando logging avanzato, sicurezza, rate limiting, e così via.

Esempio di configurazione base su Linux o Windows

In questo esempio, tutte le richieste di connessione dirette verso example.com sono inoltrate al server backend specificato, sulla porta 8080. Non è necessaria alcuna configurazione aggiuntiva per HTTPS: Caddy si occupa automaticamente di ottenere e rinnovare i certificati:

example.com {
    reverse_proxy 192.168.1.100:8080
}

Nell’esempio seguente, Caddy distribuisce le richieste tra i due server backend in maniera automatica e bilanciata, applicando le stesse regole di sicurezza e caching:

example.com {
    reverse_proxy 192.168.1.100:8080 192.168.1.110:8081
}

Caddy è spesso scelto per progetti moderni dove si desidera una soluzione pronta all’uso, facile da configurare e sicura, riducendo significativamente la complessità rispetto a Nginx o HAProxy.

Cloudflare funge da reverse proxy?

Cloudflare è principalmente conosciuta come Content Delivery Network (CDN) e servizio di sicurezza Web, ma la sua architettura funge anche da reverse proxy globale. Passando a Cloudflare la gestione di un nome di dominio, il traffico client passa prima dai server Cloudflare: tutti i visitatori raggiungono Cloudflare, che agisce come intermediario.

Le richieste sono inoltrate al server di origine (backend) solo se necessario, filtrando il traffico prima che arrivi al server reale. Inoltre, Cloudflare memorizza copie dei contenuti statici vicino agli utenti finali per ridurre latenza e carico sui server di origine.

Inoltre, Cloudflare offre mitigazione DDoS, firewall applicativo (WAF), rate limiting, protezione contro bot e attacchi comuni. Inoltre, il proxy Web Cloudflare offre ottimizzazioni come minificazione di JS/CSS, meccanismi di “alleggerimento” delle immagini, HTTP/3 e altro ancora.

Il rovescio della medaglia è che in caso di problemi (fortunatamente piuttosto rari) legati all’infrastruttura Cloudflare (come avvenuto nell’incidente di novembre 2025 che ha reso irraggiungibili per ore milioni di siti Web), i propri servizi potrebbero risultare, a cascata, non più funzionanti proprio perché il reverse proxy presenta un malfunzionamento.

In pratica, Cloudflare maschera e protegge il server backend, proprio come fa un reverse proxy, aggiungendo però funzionalità avanzate di sicurezza, ottimizzazione e distribuzione geografica dei contenuti.

Reverse Proxy e sicurezza: cosa vede un aggressore remoto?

Se un attaccante prova a raggiungere l’indirizzo IP pubblico sul quale è attestato il reverso proxy, quello che vede dipende dal proxy e dalle configurazioni.

In ogni caso, il certificato e le informazioni di handshake della connessione TLS possono essere esaminate. Inoltre, si possibile osservare la risposta predefinita del server: se il reverse proxy non riconosce l’hostname richiesto, restituirà tipicamente un errore o una pagina generica (404).

Un proxy sicuro non impedisce che l’attaccante scopra l’esistenza dei servizi. Anche utilizzando nomi di host complessi o apparentemente casuali, gli host reali possono essere dedotti attraverso DNS, certificati pubblici (Certificate Transparency), o semplicemente tramite tentativi. In altre parole, l’oscuramento dei nomi non sostituisce misure di sicurezza reali.

Chi volesse mantenere i servizi accessibili solo internamente, può usare:

  • DNS locale o split DNS (due viste DNS separate: in quella interna, i client della rete locale risolvono nomi interni (es. server aziendali) verso indirizzi IP privati; in quella esterna, i client esterni risolvono gli stessi nomi verso indirizzi pubblici accessibili da Internet). Per risolvere i nomi interni senza esporli pubblicamente.
  • VPN o reti overlay (come Tailscale, Netbird o Nebula) per connettersi in sicurezza da remoto senza aprire porte pubbliche. In un altro articolo abbiamo visto come rendere un mini PC un server sicuro accessibile da remoto con Tailscale e Traefik.

Sicurezza reale: dove si gioca la partita

Il vero livello di sicurezza non dipende dal proxy in sé, ma dai servizi che ospita. Se un server interno soffre di qualche vulnerabilità (software non aggiornato o configurazioni deboli), esse saranno sfruttabili anche se dietro un reverse proxy. Il proxy può però aggiungere barriere aggiuntive:

  • Autenticazione centralizzata: strumenti come Authentik o Authelia possono obbligare gli utenti a passare attraverso un sistema di login robusto prima di accedere a qualsiasi servizio.
  • Controlli di accesso e filtraggio: il proxy può limitare accessi per IP, geolocalizzazione, rate limit e rifiutare richieste malformate.
  • MTLS (Mutual TLS): utile per applicazioni interne sensibili, richiede certificati client per connettersi.
  • Separazione in VLAN e reti interne: isolare i servizi internamente con la segmentazione della rete, riduce l’impatto di eventuali compromissioni.

Alcune misure sono reattive, come WAF (Web Application Firewall), Fail2Ban o CrowdSec, che rilevano attacchi in corso. Altre sono proattive, come autenticazione, VPN o accesso limitato: entrambe sono necessarie per una risposta completa ed efficace.

Conclusione

Il reverse proxy è un elemento chiave nelle infrastrutture moderne, capace di combinare sicurezza, ottimizzazione e gestione del traffico in un’unica soluzione. Sia su Linux che su Windows, la sua implementazione richiede competenze specifiche, ma i benefici in termini di performance, scalabilità e protezione dei server backend sono significativi. Comprendere il funzionamento e le implicazioni di un reverse proxy è essenziale per qualsiasi amministratore di rete o sviluppatore Web che gestisca infrastrutture professionali.

D’altra parte, è bene tenere a mente che un reverse proxy è uno strumento fondamentale per organizzare e proteggere i servizi Web, ma non è una soluzione di sicurezza completa. La protezione reale viene dall’aggiornamento dei servizi, da un sistema di autenticazione robusto, da un’architettura di rete sicura e dall’uso intelligente di controlli proattivi e reattivi. Usare nomi di host oscuri o proxy “a scatola chiusa” può rallentare i bot, ma non sostituisce misure di sicurezza solide.

Ti consigliamo anche

Link copiato negli appunti