Cómo configurar Apache como proxy inverso

4 giu 2024 4 min di lettura
Cómo configurar Apache como proxy inverso
Indice dei contenuti

Introducción

Configurar Apache como proxy inverso significa configurar Apache para escuchar y dirigir el tráfico web a servidores o servicios backend. Esto puede ayudarle a administrar y equilibrar la carga de sus servidores, mejorar la seguridad y hacer que sus servicios web sean más eficientes. También puede configurarlo para escuchar la solicitud en puertos HTTP y HTTPS estándar y redirigirla a servicios backend que se ejecutan en diferentes puertos.

En esta guía le mostraremos cómo configurar Apache como proxy inverso en sencillos pasos. Incluso si es nuevo en este campo, no se preocupe: lo haremos fácil de entender y seguir. Al final, tendrá un proxy inverso funcional que ayudará a que sus aplicaciones web se ejecuten sin problemas.

Escenario de red

Imagine que tiene Apache instalado en un servidor al que cualquiera puede acceder desde Internet. Apache escucha el tráfico en los puertos HTTP y HTTPS habituales. También tienes algunas aplicaciones:

  • Una aplicación se ejecuta en el mismo servidor que Apache pero utiliza un puerto diferente, como 3000.
  • Otras aplicaciones se ejecutan en un servidor diferente dentro de la misma red, pero no se puede acceder a este servidor desde Internet.

Entonces, comencemos la configuración:

Paso 1: Configurar el módulo de proxy Apache

De forma predeterminada, este módulo está habilitado en Apache para los usuarios que lo han instalado utilizando paquetes rpm. Los usuarios basados ​​en Debian deben habilitar los módulos manualmente.

Sistemas basados ​​en RedHat: edite el archivo de configuración del proxy /etc/httpd/conf.modules.d/00-proxy.conf y descomente las siguientes entradas. Si no están disponibles, agréguelos:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Sistemas basados ​​en Debian: utilice el siguiente comando para habilitar el módulo Proxy con Apache.

sudo a2enmod proxy proxy_http

Después de habilitar los módulos, deberá reiniciar los servicios de Apache para aplicar los cambios inmediatamente.

Paso 2: configurar el host virtual Apache

Ahora empezará a funcionar con el host virtual. Estamos creando tres hosts virtuales como se muestra a continuación. Crea solo lo que se requiere con las modificaciones necesarias. Edite el archivo de configuración principal de Apache y comience con la configuración.

Proxy inverso a la aplicación local

Para reenviar todas las solicitudes enviadas a www.tudominio.com a una aplicación backend que se ejecuta localmente en el puerto 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 local con URL secundaria

Para reenviar la URL de un subdirectorio específico a una aplicación de backend. Por ejemplo, para reenviar todas las solicitudes enviadas a www.tudominio.com/api a una aplicación backend que se ejecuta localmente en el puerto 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 para la aplicación host backend

Para reenviar todas las solicitudes enviadas a www.sudominio.com a una aplicación backend que se ejecuta en un servidor diferente (IP 192.168.1.100) en el puerto 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 para múltiples aplicaciones backend

Para reenviar solicitudes a diferentes aplicaciones backend por ruta URL, por ejemplo, reenvíe solicitudes a www.yourdomain.com/app1 a una aplicación en el puerto 3000 y reenvíe solicitudes a www.yourdomain.com/app2 a una aplicación en el puerto 5000 en un servidor (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 para aplicar en diferentes puertos

Para reenviar solicitudes a diferentes aplicaciones backend en el mismo servidor pero en diferentes puertos, por ejemplo, reenvíe solicitudes a www.yourdomain.com/app1 a una aplicación en el puerto 3000 y reenvíe solicitudes a www.yourdomain.com/app2 a una aplicación en puerto 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>

Paso 3: reinicie Apache para aplicar los cambios

Una vez que el host virtual Apache se haya creado correctamente, deberá reiniciar el servicio Apache. Utilice los siguientes comandos para reiniciar el servicio Apache según su sistema operativo.

Sistemas basados ​​en deuda:

sudo systemctl restart httpd

Sistemas basados ​​en RedHat:

sudo systemctl restart apache2

Conclusión

Espero que este tutorial te ayude a comprender el uso del proxy inverso con Apache. Configurar Apache como proxy inverso puede ayudarle a administrar sus aplicaciones web de manera más efectiva. Si necesita enrutar el tráfico a aplicaciones locales o a diferentes servidores, configurar un proxy inverso puede mejorar el rendimiento y la seguridad de su sistema. Si sigue los ejemplos proporcionados en este tutorial, podrá configurar y personalizar fácilmente su propio proxy inverso para satisfacer sus necesidades específicas.

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.