Introduzione
In questa guida vedremo come configurare un reverse proxy con Apache su Debian/Ubuntu.
Ma cos’è esattamente un “reverse proxy“?
Configurare un reverse proxy con Apache su Debian/Ubuntu significa instradare la richiesta di un dominio, di solito di 3° livello, come ad esempio sito.esempio.it, ad un IP posto all’interno della nostra rete.
Per evitare di esporre ad internet le varie macchine, si imposta un reverse proxy che è l’unico ad essere pubblico. Tutte le richieste arriveranno al server che smisterà successivamente, in base al tipo di richiesta, alla macchina interessata.
Se noi digitiamo sito.esempio.it, non risponderà direttamente la macchina interessata, ma passeremo attraverso il server proxy che penserà lui a instradare la richiesta, essendo così l’unico ad avere nel router le porta 80 e/o 443 aperte.

Installare apache su Debian/Ubuntu
Per configurare il reverse proxy su apache, hai ovviamente bisogno prima di installarlo.
Se non ce l’hai, ti lascio il link per installare apache su Debian/Ubuntu, se invece ce l’hai già, passa al capitolo successivo.
Abilitare reverse proxy con Apache
Per poter utilizzare Apache come server proxy, c’è bisogno di abilitare 2 moduli, proxy e proxy_http.
Una volta fatto il login come root nel terminale della macchina dove hai installato apache, dai questo comando
a2enmod proxy
a2enmod proxy_http
dopo di che riavvia il servizio di apache con il comando
systemctl reload apache2
Configurare reverse proxy con Apache
Ora che i due moduli sono correttamente abilitati, passiamo alla configurazione.
Come per i vhost normali, anche qui dobbiamo creare i/il file .conf che contengono la regola del reverse proxy. Spostati nella cartella dove ci sono questi file
cd /etc/apache2/sites-available/
e crea un nuovo file, ad esempio nas.conf
nano nas.conf
Ti si aprirà l’editor di testo con ovviamente un file totalmente nuovo e vuoto, copia ed inserisci il codice qui sotto, che poi andrai a modificare
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
ProxyRequests Off
ProxyPass / http://123.456.7.891/
ProxyPassReverse / http://123.456.7.891/
</VirtualHost>
Analizziamo bene cosa devi andare a modificare facendo finta che vuoi arrivare al tuo NAS di casa tramite il dominio nas.casamia.org
ServerName: qui dovrai inserire il dominio nas.casamia.org
ServerAlias: in questo caso specifico non devi mettere niente perchè stai usando un dominio di 3° livello, quindi puoi commentare la riga aggiungendo “#” prima di ServerAlias, diventando quindi #ServerAlias – nel caso invece in cui tu avessi il dominio, andrai ad inserire www.casamia.org con il “www”
ProxyPass: sostituisci l’IP con l’IP della macchina nella tua rete, ad esempio del NAS
ProxyPassReverse: anche qui sostituisci l’IP inserendo come sopra, quello riferito ad esempio al NAS
dovresti quindi avere come risultato una cosa tipo questa
<VirtualHost *:80>
ServerName nas.casamia.org
#ServerAlias www.domain.tld
ProxyRequests Off
ProxyPass / http://192.168.1.100/
ProxyPassReverse / http://192.168.1.100/
</VirtualHost>
Salva il file con la combinazione CTRL + X, Y e poi Invio
Ora, c’è da abilitare questo file e da riavviare il servizio apache2, quindi in fila, dai questi comandi
a2ensite nome_file.conf
systemctl restart apache2
NB. se ancora non l’hai fatto, ricordati che devi aprire le porte 80 (http) e 443 (https) nel tuo router verso l’indirizzo IP in cui hai installato apache.
Da ora in poi, tutte le volte che digiterai da fuori casa nas.casamia.org verrai indirizzato direttamente alla pagina di login del tuo NAS.
Per creare altri reverse proxy, non devi fare altro che creare altri file.conf, scegliere dominio, ip macchina, abilitare file e riavviare apache.
Conclusione
In questa guida hai visto come configurare un reverse proxy con Apache su Debian/Ubuntu per instradare le richieste che fai ad un dominio verso una macchina nella tua rete non esposta ad internet ma passando dal reverse proxy.