Proxy inverso apache
¿Cómo puedo hacer un proxy inverso con Apache?
Para lograr eso, necesitas configurar un proxy inverso (reverse proxy).
La idea es simple: tienes un servidor web principal (como Apache o Nginx) que recibe todo el tráfico web en el puerto estándar (80 para HTTP y 443 para HTTPS). Luego, configuras este servidor para que, cuando llegue una petición para tu dominio, la reenvíe internamente a tu aplicación que está corriendo en el puerto 3000. El servidor web actúa como un intermediario. 🧐
Usando Apache como Proxy Inverso
Este método es muy común y robusto. Solo necesitas habilitar un par de módulos y crear un archivo de Virtual Host.
1. Habilitar los Módulos de Proxy
Primero, asegúrate de que los módulos necesarios de Apache estén activados. Abre tu terminal y ejecuta:
sudo a2enmod proxy
sudo a2enmod proxy_httpDespués de habilitarlos, tienes que reiniciar Apache para que los cambios surtan efecto:
sudo systemctl restart apache22. Crear el Archivo de Virtual Host
Ahora, crea un nuevo archivo de configuración para tu sitio en /etc/apache2/sites-available/. Usa el nombre de tu dominio para el archivo, por ejemplo, mi-app.com.conf.
sudo nano /etc/apache2/sites-available/mi-app.com.confDentro de este archivo, pega la siguiente configuración, modificando mi-app.com y www.mi-app.com con tu dominio real:
<VirtualHost *:80>
ServerName mi-app.com
ServerAlias www.mi-app.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ErrorLog ${APACHE_LOG_DIR}/mi-app-error.log
CustomLog ${APACHE_LOG_DIR}/mi-app-access.log combined
</VirtualHost>¿Qué hace cada línea clave?
<VirtualHost *:80>: Escucha las peticiones entrantes en el puerto 80.ServerName mi-app.com: Asocia esta configuración a tu dominio.ProxyPass / http://127.0.0.1:3000/: Esta es la directiva mágica. Le dice a Apache “pasa todo (/) lo que llegue para este dominio a esta dirección interna (http://127.0.0.1:3000/)”.ProxyPassReverse / http://127.0.0.1:3000/: Reescribe las cabeceras de respuesta de tu app para que el usuario final no vea redirecciones extrañas al puerto 3000.
3. Activar el Sitio y Reiniciar Apache
Guarda el archivo (Ctrl+X, luego Y, y Enter en nano). Ahora activa tu nueva configuración y reinicia Apache una última vez.
sudo a2ensite mi-app.com.conf
sudo systemctl restart apache2¡Y listo! Ahora, cuando alguien visite http://mi-app.com, Apache recibirá la petición y la reenviará a tu aplicación en el puerto 3000 sin que el usuario se dé cuenta.
❗️ Paso Siguiente Súper Importante: Habilitar HTTPS
Hoy en día, es indispensable que tu sitio funcione con HTTPS. La forma más fácil y gratuita de hacerlo es con Let’s Encrypt.
Una vez que tu proxy inverso funcione en el puerto 80, instala Certbot, que es la herramienta de Let’s Encrypt.
sudo apt install certbot python3-certbot-apacheLuego, simplemente ejecuta este comando para obtener e instalar un certificado SSL. Certbot modificará automáticamente tu archivo de configuración de Apache para manejar HTTPS.
sudo certbot --apache -d mi-app.com -d www.mi-app.comSigue las instrucciones en pantalla y tu sitio será seguro y accesible a través de https://mi-app.com.
Este video explica visualmente cómo funciona un proxy inverso con Apache, que puede ser útil para comprender el concepto. Configuración de Reverse Proxy con Apache http://googleusercontent.com/youtube_content/0