Enlaces rápidos
A diferencia de Apache, Nginx 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 aprovechar Nginx como proxy inverso.
¿Qué es un proxy inverso?
Un servidor proxy actúa como intermediario entre un cliente y otro servidor. Recupera recursos del servidor al que desea conectarse y se los envía para que los vea. El proxy inverso funciona de la misma manera, excepto que se invierte el rol. Cuando solicita información de un servidor, el proxy inverso suspenderá 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.
Beneficios de un proxy inverso
Dependiendo de su solicitud, puede tener diferentes casos de uso para el proxy inverso.
- Un proxy inverso le permite ejecutar múltiples aplicaciones en el mismo servidor; si tiene muchas aplicaciones ejecutándose en el mismo servidor, no todos pueden estar escuchando en 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.
- Equilibrio de carga: si tiene varios servidores que ejecutan la misma aplicación, puede usar un proxy inverso para distribuir el tráfico de manera uniforme a cada servidor.
- Firewall de aplicaciones web: puede usar un proxy inverso para ocultar su aplicación del público y también filtrar IP no deseadas o proteger contra ataques 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 de tráfico.
Configurar Nginx como proxy inverso
Para configurar Nginx como proxy inverso, usaremos el parámetro proxy_pass en los archivos de configuración de Nginx.
En la mayoría de los casos de uso, Nginx será el servidor front-end, escuchando en el puerto 80 (HTTP) o 443 (HTTPS) las solicitudes entrantes. Dado que solo hay 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 sencilla sería así:
server { listen 80; listen [::]:80; server_name myapp.com; location / { proxy_pass http://localhost:8081/; } }
Esto significa que todas las solicitudes que lleguen a myapp.com en el puerto 80 se reenviarán al puerto 8081.
Ajustes avanzados
Además de la orientación contraseña_proxy Hay varias otras direcciones que puede usar para una configuración más avanzada.
encabezado_conjunto_proxy 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 dirección IP y la dirección remota de la solicitud, y luego emita el contenido correcto para la ubicación 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 suspenda temporalmente la respuesta del servidor proxy y solo la envíe al servidor de solicitudes después de que el servidor proxy haya terminado de responder. Por ejemplo:
proxy_buffers 32 4k;
Si su aplicación enviará una gran parte del archivo, es posible que deba deshabilitar búfer_proxy:
proxy_buffering off;
Resumen
Como puede ver, Nginx es un buen servidor proxy inverso. Lo mejor de todo es que su configuración es simple y fácil de usar, pero aún le permite actualizar para escenarios más complejos. Para más detalles, puedes consultar Documentación del módulo de agente de Nginx أو Ejemplos de configuración.