Ejecutar una aplicación web detrás de un proxy

10 de mayo de 2022

Lang: cs en de es

Cada vez hay más aplicaciones web que se ejecutan detrás de proxies. Configurar este tipo de aplicaciones es más complejo. Y es especialmente necesario hacerlo correctamente si la aplicación procesa alguna información de las cabeceras HTTP que necesita para funcionar correctamente. Y por eso es necesario tener un servidor proxy correctamente configurado, así como la aplicación, porque sin eso, la aplicación puede no funcionar, o puede funcionar mal, o puede haber un problema potencial de seguridad. En este artículo describiré cómo configurar dicho servidor proxy y una aplicación de ejemplo.

Para qué sirve un servidor proxy

Un servidor proxy es un software que traduce y posiblemente modifica las peticiones entre el cliente y el servidor de aplicaciones. De este modo, separa la red externa de la interna. Un servidor proxy también puede implementarse como un dispositivo independiente.

En el caso de las aplicaciones web, se trata de un proxy web. En concreto, hablaremos de un proxy inverso.

Un servidor proxy puede ser proporcionado por aplicaciones especializadas como HAProxy, Varnish, Treafik, y Squid. O puede configurar un servidor web Apache o Nginx como proxy inverso.

Un proxy inverso se utiliza hoy en día (2022) a menudo porque, porque debido a la limitación de direcciones IPv4 públicas disponibles, una dirección IPv4 se dirige al servidor donde se ejecuta el proxy, que luego reenvía las solicitudes a los servidores individuales en la red interna que tienen direcciones IP privadas. El proxy también termina las conexiones HTTPS. Para obtener más información, consulte HTTP seguro.

HAProxy se utiliza a menudo para equilibrar el tráfico y limitar las interrupciones durante las actualizaciones del servidor y deploy (desplegar) nuevas versiones de aplicaciones.

Antes del año 2000, el proxy web se utilizaba como caché, pero eso sólo tuvo sentido hasta la era de la web estática.
En las corporaciones, los proxies se utilizan para examinar el tráfico en detalle - lo que los usuarios están visitando .

Cómo configurar un servidor proxy

En primer lugar hay que configurar el servidor proxy inverso para que reciba el tráfico del dominio. A continuación, se configura hacia dónde dirigir el tráfico y cómo modificar la comunicación si es necesario.

Nginx

Ejemplo de configuración del proxy para el servidor web Nginx:

servidor {
        listen 443 ssl;
        listen [::]:443 ssl;
        nombre_servidor www.example.com;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $dirección_remota;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $puerto_servidor;
                proxy_set_header X-Forwarded-Host $host;
                proxy_pass http://IP-aplikace:80;
        }
}

Apache

Ejemplo de configuración de un servidor web Apache como proxy inverso:

        ServerName ejemplo.com
        ServerAlias www.example.com
        ProxyPreserveHost On
        ProxyRequests On
        #ProxyErrorOverride On
        ProxyPass / http://192.168.100.93/
        En ProxyPassReverse / http://192.168.100.93/
        
        RequestHeader set X-Forwarded-Port "443"
        RequestHeader set X-Forwarded-Port "https"

Configuración de la aplicación

Nette

Si estás utilizando desarrollo de aplicaciones web PHP framework Nette, necesitas añadir los siguientes ajustes al fichero de configuración de neon:

http:
	proxy: ip-proxy/ip-range-proxy
En lugar de IP-proxy/IP-range-proxy, añade el proxy IP o el rango IP de tu red local donde ejecutas la infraestructura.

Wordpress

Puede ser que estés ejecutando wordpress detrás de un proxy. Yo tuve un problema con un wordpress antiguo y lo solucioné de la siguiente manera. Añadí lo siguiente al archivo wp-config.php:

if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
        $_SERVER['HTTPS'] = 'on';
}

Esto se puede manejar de forma similar en cualquier otra aplicación PHP antigua. También puede resultarte interesante el vídeo cómo ejecutar aplicaciones PHP antiguas.

Video tutorial

La información sobre cómo funciona el proxy y cómo configurar la aplicación en Nette se puede ver en forma de vídeo:

Los PDF de la presentación de esta charla están en mi web de servicios informáticos.

Recursos

Recursos donde puedes encontrar más detalles:

Články na podobné téma

Cambio en las licencias de VMware
Ejecución de Microsoft SQL Server en Linux
Copia de seguridad: el Proxmox Backup Server
Linux como router y cortafuegos
Cómo subir una imagen Docker al Registro Docker
Linux: gestión de volúmenes lógicos
Software RAID para Linux
Migración de correo electrónico
Construcción multietapa Docker
Copia de seguridad de los datos al encender el ordenador
Podman
Importación de Windows a la virtualización Proxmox
Docker y correo PHP
Virtualización Proxmox
Docker y Cron
Lenovo ThinkPad X1 Carbon: puesta en servicio del módem LTE EM7544
Proyecto Yocto: Cree un sistema operativo personalizado para dispositivos integrados
Preparación de un servidor Linux para ejecutar una aplicación web en Python
Cómo solucionar el bajo rendimiento de los archivos compartidos en Docker
Cómo empezar a utilizar Docker correctamente
Instalación de Linux en un servidor HPE ProLiant DL320e dedicado
Cómo poner a prueba una aplicación web
Por qué utilizar el sistema de archivos JFS
Cómo arrancar desde un disco de 4TB con GTP usando UEFI
Sistema de archivos Btrfs
Raspberry PI
WINE - ejecución de programas Windous en Linux
Sistema operativo GNU/Linux

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+