Cómo utilizar Nginx como proxy inverso

funciones de proxy inverso

Aparte de Apache, Nginx es el servidor web más popular que existe. Además de ser un servidor web, también se puede utilizar como un equilibrador de carga o un proxy inverso. En este tutorial, le mostraremos cómo puede utilizar Nginx como proxy inverso.

¿Qué es un proxy inverso?

Un servidor proxy actúa como intermediario entre el cliente y otro servidor. Recupera recursos del servidor al que desea conectarse y se los envía para que los vea. Un proxy inverso funciona de la misma manera, excepto que la función se invierte. Cuando solicita información de un servidor, el proxy inverso se hará cargo de la solicitud y la enviará al servidor backend correspondiente. Esto permite al administrador del sistema utilizar un servidor para múltiples aplicaciones, así como garantizar un flujo de tráfico más fluido entre el cliente y el servidor.

Ilustración de proxy inverso

Beneficios de un proxy inverso

Dependiendo de su aplicación, es posible que tenga diferentes casos de uso de proxy inverso.

  • Un proxy inverso le permite ejecutar múltiples aplicaciones en el mismo servidor – Si tiene varias aplicaciones ejecutándose en el mismo servidor, no todas pueden estar escuchando el puerto 80 o 433 al mismo tiempo. Con un proxy inverso, puede configurar el proxy inverso para redirigir el tráfico a aplicaciones individuales según sea necesario.
  • Balanceo de carga – Si tiene varios servidores que ejecutan la misma aplicación, puede utilizar un proxy inverso para distribuir el tráfico de manera uniforme a cada servidor.
  • Cortafuegos de aplicaciones web – Puede hacer uso de un proxy inverso para ocultar su aplicación del público y también para filtrar la IP de spam o protegerla de un ataque DDOS.
  • Registro y auditoría sencillos – Dado que todo el tráfico entrante es administrado por el proxy inverso, es más fácil registrar y monitorear el flujo del tráfico.

Configuración de Nginx como proxy inverso

Para configurar Nginx como proxy inverso, usaremos el proxy_pass parámetro en los archivos de configuración de Nginx.

Nota: Este tutorial asume que tiene algún conocimiento de Nginx y que ya ha instalado y configurado Nginx en su servidor.

En la mayoría de los casos de uso, Nginx será el servidor frontal que escuchará el puerto 80 (HTTP) o 443 (HTTPS) para las solicitudes entrantes. Como solo puede haber un servicio escuchando en el puerto 80 o 443, su aplicación tendrá que escuchar en otro puerto, como el puerto 8081. La configuración más simple será algo como esto:

Esto significa que todas las solicitudes entrantes a myapp.com en el puerto 80 serán redirigidas al puerto 8081.

Configuración avanzada

Además de proxy_pass directiva, hay varias otras directivas que puede utilizar para una configuración más avanzada.

proxy_set_header – Esto le permite configurar el encabezado para enviarlo a la aplicación en segundo plano. Por ejemplo, consulte la siguiente configuración:

Puede configurar el encabezado de proxy necesario para que pase a la aplicación para que conozca la IP de la solicitud y la dirección remota, y genere el contenido correcto para el sitio de la solicitud.

tiempo de espera del proxy – Esto le permite establecer el valor de tiempo de espera para enviar y recibir solicitudes de proxy. Por ejemplo:

proxy_buffers – Esto permite a Nginx retener temporalmente la respuesta del servidor proxy y solo enviarla al servidor de solicitudes después de que el servidor proxy termine de responder. Por ejemplo:

Si su aplicación va a enviar una gran parte de un archivo, es posible que desee deshabilitar proxy_buffers:

Resumen

Como puede ver, Nginx es un servidor proxy inverso capaz. Lo mejor de esto es que su configuración es simple, fácil de usar y, sin embargo, le permite escalar para escenarios más complicados. Para obtener más detalles, puede consultar el Documentación del módulo proxy de Nginx o la ejemplos de configuración.

Credito de imagen: Proxy inverso, Proxy inverso