Come configurare Apache come proxy inverso

4 giu 2024 4 min di lettura
Come configurare Apache come proxy inverso
Indice dei contenuti

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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.