Acerca del servidor proxy reverso
El proxy reverso es un servidor que se sitúa en frente de servidores web y redirige a los clientes a dichos servidores web. Estos servidores se utilizan para ayudar a incrementar seguridad, rendimiento y confiabilidad. No obstante, para comprender su funcionamiento se requiere conocer también lo que es un servidor proxy. Para mayor detalle visitar esta referencia de CloudFlare.
Servidor Proxy
Un servidor proxy directo es un servidor que se ubica en frente a clientes y redirige el tráfico hacia sitios o servicios en Internet. Normalmente, se utiliza por los siguientes motivos:
-
Evadir restricciones de estado o institucionales.
-
Bloquear el acceso a cierto contenido.
-
Proteger la identidad online.
Servidor Proxy Reverso
A diferencia del servidor proxy, este su ubica en frente de otros servidores interceptando los request desde clientes, mientras que el proxy directo se ubica en frente de los clientes. De esta manera cuando un cliente envía una petición a un servidor de origen, estas peticiones son interceptadas por el proxy reverso, que las reenvía al servidor de origen. Los motivos para utilizar un proxy reverso son:
-
Balanceador de carga, para poder gestionar las peticiones entre los diferentes servidores.
-
Protección frente a ataques, con el proxy reverso un servidor web o servido no necesita exponer su dirección IP pública del servidor de origen.
-
Servidor global para balanceo de carga, en este caso un sitio web puede ser distribuido en varios servidores alrededor del mundo y el proxy reverso puede redirigirlo al servidor que está más cerca al cliente.
-
Caching, también puede generar un contenido de cache el cual ofrece un rendimiento más rápido.
-
Encryptación SSL, ayuda a encriptar y desencriptar mediante SSL para cada cliente sin necesidad de implementarlo en cada servidor de origen.
Para implementar el Proxy reverso se puede emplear diferentes herramientas tales como HAProxy y Nginx.
En este proyecto se empleará Nginx para la implementación de este servidor.
NGINX
NGINX es un servidor de HTTP y proxy reverso, un servidor de email y un servidor proxy genérico de TCP/UDP originalmente escrito por Igor Sysoev. Actualmente es una aplicación de código abierto, con soporte comercial dado por Nginx, Inc.
Entre sus principales características se encuentran:
-
Servir archivos estáticos y descriptores de archivos.
-
Acelerar el proxy reverso con cache, e implementar balanceadores de carga con tolerancia a fallos.
-
Acelerar el soporte con cache de FastCGI, uwsgi, SCGI y servidores de memcache.
-
Arquitectura modular.
-
Soporte para SSL y TLS.
-
Soporte para HTTP/2 con priorización basada en dependencia.