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.
Consiglio

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
shell

Quindi aggiorna i pacchetti installati sul sistema:

$ sudo aptitude upgrade -y
shell

Secondo 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
shell

Terzo 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
shell

Quarto 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
shell
Esecuzione di a2enmod
Comando a2enmod-nel terminale

Eseguendo 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
shell

Alcuni 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
shell

Abbiamo 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>
shell

Premi 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>
shell

Settimo 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>
shell

Ottavo passaggio: riavviare Apache

Al termine della configurazione devi riavviare il server web Apache in modo che le modifiche vengano applicate.

$ service apache2 restart
shell

Ora il reverse proxy di Apache dovrebbe inoltrare le richieste ai server back end.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.