Además de Apache, Nginx es el servidor web más popular disponible. Además de ser un servidor web, también se puede utilizar como equilibrador de carga o proxy inverso. En este tutorial, Quantrimang.com le mostrará cómo puede utilizar Nginx como proxy inverso.
¿Qué es un proxy inverso?
Un servidor proxy actúa como intermediario entre un cliente y otro servidor. El servidor proxy 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 los roles se invierten. Cuando solicita información del servidor, el proxy inverso retiene la solicitud y la envía al servidor backend apropiado. Esto permite a los administradores del sistema utilizar el servidor para múltiples aplicaciones, además de garantizar un flujo de tráfico más fluido entre el cliente y el servidor.

Beneficios de los proxies inversos
Dependiendo de su aplicación, es posible que tenga diferentes casos de uso de proxy inverso.
- Un proxy inverso le permite ejecutar varias aplicaciones en el mismo servidor . Si tiene varias aplicaciones ejecutándose en el mismo servidor, no todas pueden "escuchar" al mismo tiempo en el puerto 80 o 433. Con un proxy inverso, puede configurarlo para redirigir el tráfico a aplicaciones individuales si es necesario.
- Equilibrio de carga : si tiene varios servidores ejecutando la misma aplicación, puede utilizar un proxy inverso para distribuir el tráfico de manera uniforme a cada servidor.
- Firewall de aplicaciones web : puede utilizar un proxy inverso para ocultar su aplicación y también para filtrar direcciones IP no deseadas o protegerse contra ataques DDOS .
- Registro y auditoría sencillos : dado que todo el tráfico entrante se gestiona mediante un proxy inverso, es más fácil registrar y monitorear los flujos de tráfico.
Configurar Nginx como proxy inverso
Para configurar Nginx como proxy inverso, el artículo utilizará el parámetro proxy_pass en el archivo de configuración de Nginx.
Nota : este tutorial asume que tiene algunos conocimientos de Nginx y que ha instalado y configurado 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. Dado que sólo 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 se verá así:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Esto significa que todas las solicitudes a myapp.com en el puerto 80 serán redirigidas al puerto 8081.
Ajustes avanzados
Además de la directiva proxy_pass , existen otras directivas que puede utilizar para una configuración más avanzada.
- proxy_set_header : esto le permite configurar un encabezado para enviar a la aplicación en segundo plano. Por ejemplo, consulte 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 los encabezados proxy necesarios para pasar a la aplicación, indicarle la IP solicitada y la dirección remota, y luego enviar el contenido correcto al sitio web solicitante.
- Tiempo de espera de 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;
- proxy_buffers : esto permite a Nginx retener temporalmente la respuesta del servidor proxy y solo enviarla al servidor solicitante después de que el servidor proxy termine de responder. Por ejemplo:
proxy_buffers 32 4k;
Si su aplicación envía una gran cantidad de archivos, es posible que desee desactivar proxy_buffers:
proxy_buffering off;
Como puede ver, Nginx es un servidor proxy inverso que tiene muchos usos. La mayor ventaja de esto es que es simple de configurar, fácil de usar y aún le permite escalar en escenarios más complejos. Para obtener más detalles, puede consultar la documentación del módulo proxy de Nginx (en https://nginx.org/en/docs/http/ngx_http_proxy_module.html) o ejemplos de configuración (en https://www.nginx.com/resources/wiki /inicio/temas/ejemplos/completo/).
Espero que tengas éxito.