Reverse proxy di Apache: configurazione con il modulo mod_proxy
Implementando un reverse proxy come livello aggiuntivo di protezione, è possibile migliorare la solidità della propria applicazione web e ridurre al minimo il rischio di attacchi. Il server HTTP Apache dispone di molti moduli ed estensioni che supportano varie funzioni di proxy. Nelle nostre istruzioni ti spieghiamo come impostare e configurare un reverse proxy di Apache.
Che cos’è mod_proxy?
Apache è un noto e diffuso server web open source, utilizzato per fornire contenuti web su internet. È disponibile su molti sistemi operativi come Windows, Linux e macOS e può essere ampliato in modo flessibile tramite plugin e moduli.
Il modulo mod_proxy dà la possibilità al server web Apache di agire come un reverse proxy, inoltrando le richieste a un altro server e restituendo la risposta al client. Questo è utile se, ad esempio, si dispone di diversi server web e si vuole distribuire il carico tra di essi. In questo modo è possibile migliorare le prestazioni o costruire un’architettura ad alta disponibilità.
Apache mod_proxy è composto da diversi moduli, ognuno con le proprie funzionalità. Di seguito ti presentiamo alcuni dei moduli più importanti:
- mod_proxy: fornisce la funzionalità principale del reverse proxy e inoltra le richieste a un altro server.
- mod_proxy_http: fornisce la funzionalità proxy per i protocolli HTTP e HTTPS.
- mod_proxy_ftp: fornisce funzioni proxy per il protocollo FTP.
- mod_proxy_connect: usato per connessioni criptate SSL.
- mod_proxy_ajp: utilizzato per inoltrare le richieste ai server delle applicazioni abilitati AJP.
- mod_proxy_wstunnel: per l’uso di web socket.
- mod_proxy_balancer: fornisce funzioni di load balancing.
- mod_cache: supporta vari metodi di cache.
- mod_headers: serve per la modifica delle righe di intestazione HTTP.
- mod_deflate: comprime le risposte HTTP.
L’Hosting Linux di IONOS supporta una serie di moduli Apache che ti consentono di configurare in modo rapido ed efficace il reverse proxy di Apache. Approfitta anche delle prestazioni flessibili e scalabili, della protezione DDoS e delle migliori funzionalità PHP.
Configurare un reverse proxy di Apache: guida
Questo tutorial presuppone che Apache sia già stato installato sul tuo sistema. Per informazioni dettagliate su come configurare un server web Apache, consulta la nostra guida.
Primo passaggio: aggiornare l’indice del pacchetto
Per prima cosa è necessario aggiornare l’elenco dei pacchetti disponibili.
Inserisci il seguente comando nel terminale:
$ sudo aptitude update
shellQuindi aggiorna i pacchetti installati sul sistema:
$ sudo aptitude upgrade -y
shellSecondo passaggio: scaricare gli strumenti di compilazione essenziali
Successivamente, installiamo Essential Build Tools. Si tratta di un gruppo di strumenti e librerie necessari per creare e compilare applicazioni su Linux.
$ sudo aptitude install -y build-essential
shellTerzo passaggio: installare i moduli e le dipendenze
Ora possiamo scaricare e installare i moduli e le librerie necessari per il reverse proxy di Apache.
$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev
shellQuarto passaggio: attivare i moduli
Prima di attivare le estensioni, occorre verificare che siano state installate correttamente. Il comando seguente mostra un elenco dei moduli disponibili:
$ a2enmod
shellEseguendo il comando a2enmod
ti viene chiesto quali moduli desideri installare. È possibile elencare le estensioni desiderate in un’unica riga:
$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
shellÈ anche possibile attivare ogni modulo singolarmente:
$ a2enmod proxy
$ a2enmod proxy_http
$ a2enmod proxy_ajp
$ a2enmod rewrite
$ a2enmod deflate
$ a2enmod header
$ a2enmod proxy_balancer
$ a2enmod proxy_connect
$ a2enmod proxy_html
shellAlcuni moduli sono attivi per impostazione predefinita. Con a2enmod
ti assicuri che siano realmente abilitati.
Quinto passaggio: modificare la configurazione predefinita
Per implementare le funzioni proxy del server web Apache, è necessario modificare il file di configurazione predefinito 000-default.conf nella directory /etc/apache2/sites-enabled.
$ nano /etc/apache2/sites-enabled/000-default.conf
shellAbbiamo configurato un host proxy virtuale con le estensioni mod_virtualhost e mod_proxy. Puoi quindi adattare il codice in base alle tue esigenze.
<VirtualHost *:*>
ProxyPreserveHost On
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
ServerName localhost
</VirtualHost>
shellPremi Ctrl
+ X
e Y
per salvare le modifiche e chiudere l’editor di testo.
Sesto passaggio: configurare il load balancing
Se gestisci diversi server back end, ti consigliamo di distribuire il carico utilizzando il load balancing (in italiano traducibile come “bilanciamento del carico”).
Hai la possibilità di utilizzare il codice seguente come modello e di inserirlo nel file di configurazione standard:
<Proxy balancer://mycluster>
# Define back-end servers:
# Server 1
BalancerMember http://0.0.0.0:8080/
# Server 2
BalancerMember http://0.0.0.0:8081/
</Proxy>
<VirtualHost *:*>
# Apply VH settings as desired
# However, configure ProxyPass argument to
# use "mycluster" to balance the load
ProxyPass / balancer://mycluster
</VirtualHost>
shellSettimo passaggio: impostare il supporto SSL
Se desideri utilizzare il protocollo SSL sul server Apache per connessioni e certificati criptati, devi abilitare un secondo host virtuale.
Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
# Set the path to SSL certificate
# Usage: SSLCertificateFile /path/to/cert.pem
SSLCertificateFile /etc/apache2/ssl/file.pem
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://0.0.0.0:8080/
ProxyPassReverse / http://0.0.0.0:8080/
# Or, balance the load:
# ProxyPass / balancer://balancer_cluster_name
</VirtualHost>
shellOttavo passaggio: riavviare Apache
Al termine della configurazione devi riavviare il server web Apache in modo che le modifiche vengano applicate.
$ service apache2 restart
shellOra il reverse proxy di Apache dovrebbe inoltrare le richieste ai server back end.