Cómo usar Nginx como proxy inverso

Además 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 equilibrador de carga o 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 se invierte el rol. Cuando solicita información de un servidor, el proxy inverso tomará control de la solicitud y la enviará al servidor backend apropiado. Esto permite que el administrador del sistema use un servidor para múltiples aplicaciones, así como para 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, puede tener 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 utilizar un proxy inverso para ocultar su aplicación al público y también para filtrar IP no deseada o protegerla de un ataque DDOS.
  • Fácil registro y auditoría – 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 un 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 instaló y configuró Nginx en su servidor.

En la mayoría de los casos de uso, Nginx será el servidor front-end, escuchando 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:

server {
  listen 80;
  listen [::]:80;
 
  server_name myapp.com;
 
  location / {
      proxy_pass http://localhost:8081/;
  }
}

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

Configuración avanzada

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

proxy_set_header – Esto le permite configurar el encabezado para enviar a la aplicación de fondo. Por ejemplo, vea la siguiente configuración:

proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

Puede configurar el encabezado de proxy necesario para pasar 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_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;

búfer_proxy – Esto permite que Nginx retenga temporalmente la respuesta del servidor proxy y solo la envíe 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 aun así te permite escalar para escenarios más complicados. Para obtener más detalles, puede consultar el Documentación del módulo de proxy Nginx o el ejemplos de configuración.

Credito de imagen: Proxy inverso, Proxy inverso

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *