Introduzione
Configurare Apache come proxy inverso significa configurare Apache per ascoltare e indirizzare il traffico web verso server o servizi backend. Ciò può aiutarti a gestire e bilanciare il carico sui tuoi server, migliorare la sicurezza e rendere i tuoi servizi web più efficienti. Puoi anche configurarlo per ascoltare la richiesta su porte HTTP e HTTPS standard e reindirizzarla ai servizi backend in esecuzione su porte diverse.
In questa guida ti mostreremo come configurare Apache come proxy inverso in semplici passaggi. Anche se sei nuovo in questo campo, non preoccuparti: lo renderemo facile da capire e da seguire. Alla fine, avrai un proxy inverso funzionante che aiuterà le tue applicazioni web a funzionare senza intoppi.
Scenario di rete
Immagina di avere Apache installato su un server a cui chiunque può accedere da Internet. Apache è in ascolto del traffico sulle solite porte HTTP e HTTPS. Hai anche poche applicazioni:
- Un'applicazione è in esecuzione sullo stesso server di Apache ma utilizza una porta diversa, come 3000.
- Altre applicazioni sono in esecuzione su un server diverso all'interno della stessa rete, ma questo server non è accessibile da Internet.
Quindi, iniziamo la configurazione:
Passaggio 1: configurazione del modulo proxy Apache
Per impostazione predefinita, questo modulo è abilitato in Apache per gli utenti che hanno installato utilizzando i pacchetti rpm. Gli utenti basati su Debian devono abilitare i moduli manualmente.
Sistemi basati su RedHat: modificare il file di configurazione del proxy /etc/httpd/conf.modules.d/00-proxy.conf rimuovere il commento dalle seguenti voci. Se non disponibili, aggiungili:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Sistemi basati su Debian: utilizzare il comando seguente per abilitare il modulo Proxy con Apache.
sudo a2enmod proxy proxy_http
Dopo aver abilitato i moduli, dovrai riavviare i servizi Apache per applicare immediatamente le modifiche.
Passaggio 2: configura l'host virtuale Apache
Ora inizierà a lavorare con l'host virtuale. Stiamo creando tre host virtuali come di seguito. Crei solo ciò che è richiesto con le modifiche necessarie. Modifica il file di configurazione principale di Apache e inizia con la configurazione.
Proxy inverso all'applicazione locale
Per inoltrare tutte le richieste inviate a www.tuodominio.com a un'applicazione backend in esecuzione localmente sulla porta 3000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for the application running on port 3000 on the same server
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Proxy inverso a locale con URL secondario
Per inoltrare l'URL di una sottodirectory specifica a un'applicazione backend. Ad esempio, per inoltrare tutte le richieste inviate a www.tuodominio.com/api a un'applicazione backend in esecuzione localmente sulla porta 3000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for the application running on port 3000 on the same server
ProxyPass /api http://localhost:3000/
ProxyPassReverse /api http://localhost:3000/
# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Proxy inverso per l'applicazione host backend
Per inoltrare tutte le richieste inviate a www.tuodominio.com a un'applicazione backend in esecuzione su un server diverso (IP 192.168.1.100) sulla porta 3000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for the application running on a different server
ProxyPass / http://192.168.1.100:3000/
ProxyPassReverse / http://192.168.1.100:3000/
# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Proxy inverso per più applicazioni backend
Per inoltrare richieste a diverse applicazioni backend in base al percorso URL, ad esempio, inoltrare richieste a www.tuodominio.com/app1 a un'applicazione sulla porta 3000 e richieste a www.tuodominio.com/app2 a un'applicazione sulla porta 5000 su un server diverso (IP 192.168.1.100):
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for different applications
ProxyPass /app1 http://localhost:3000/
ProxyPassReverse /app1 http://localhost:3000/
ProxyPass /app2 http://192.168.1.100:5000/
ProxyPassReverse /app2 http://192.168.1.100:5000/
# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Proxy inverso per l'applicazione su porte diverse
Per inoltrare richieste a diverse applicazioni backend sullo stesso server ma su porte diverse, ad esempio, inoltrare richieste a www.tuodominio.com/app1 a un'applicazione sulla porta 3000 e richieste a www.tuodominio.com/app2 a un'applicazione sulla porta 5000:
<VirtualHost *:80>
ServerName www.yourdomain.com
ProxyPreserveHost On
# Reverse proxy for different applications
ProxyPass /app1 http://localhost:3000/
ProxyPassReverse /app1 http://localhost:3000/
ProxyPass /app2 http://localhost:5000/
ProxyPassReverse /app2 http://localhost:5000/
# Change log as per server
# ErrorLog ${APACHE_LOG_DIR}/error.log
# CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Passaggio 3: riavviare Apache per applicare le modifiche
Una volta creato con successo l'host virtuale Apache, è necessario riavviare il servizio Apache. Utilizza i seguenti comandi per riavviare il servizio Apache in base al sistema operativo.
Sistemi basati su Debed:
sudo systemctl restart httpd
Sistemi basati su RedHat:
sudo systemctl restart apache2
Conclusione
Spero che questo tutorial ti aiuti a capire l'uso del proxy inverso con Apache. La configurazione di Apache come proxy inverso può aiutarti a gestire le tue applicazioni web in modo più efficace. Se devi indirizzare il traffico verso applicazioni locali o verso server diversi, la configurazione di un proxy inverso può migliorare le prestazioni e la sicurezza del tuo sistema. Seguendo gli esempi forniti in questo tutorial, puoi facilmente configurare e personalizzare il tuo proxy inverso per soddisfare le tue esigenze specifiche.