NGINX se ha ganado una merecida fama como servidor web de muy alto rendimiento. Creo que mucha gente sabe que NGINX también puede utilizarse como proxy inverso, pero quizá no sea consciente de lo potente que es en esta función.
¿Qué es un proxy inverso?
Empecemos dando un paso atrás y preguntándonos: ¿qué es un servidor proxy? Creo que Wikipedia ofrece una buena definición:
«[Un] servidor proxy es un servidor (un sistema informático o una aplicación) que actúa como intermediario en las solicitudes de clientes que buscan recursos de otros servidores».
Así pues, un servidor proxy se sitúa entre un cliente y el servidor real que aloja los datos que busca el cliente. Para el cliente, el servidor proxy parece ser el servidor backend real, mientras que, para el servidor backend, el servidor proxy parece un cliente. Para definir qué es un servidor proxy inverso, volvemos a consultar Wikipedia:
«[Un] proxy inverso es un tipo de servidor proxy que recupera recursos de uno o varios servidores en nombre de un cliente».
La diferencia es que un servidor proxy se sitúa entre los clientes y un único servidor backend, mientras que un servidor proxy inverso se sitúa delante de uno o varios servidores backend y decide cuál de ellos utilizar para cada solicitud.
¿Cuáles son las ventajas de utilizar un proxy inverso?
¿Por qué querrías utilizar un servidor proxy inverso? Ofrece numerosas ventajas:
- Concurrencia – Las aplicaciones de Internet suelen implicar un gran número de clientes, cada uno de los cuales abre varias conexiones, lo que genera una cantidad muy elevada de conexiones con los servidores backend. Muchos servidores web y servidores de aplicaciones no gestionan bien un gran número de conexiones (NGINX, cuando se utiliza como servidor web, es una excepción), por lo que añadir un proxy inverso capaz de gestionar mejor múltiples conexiones puede mejorar notablemente el rendimiento de los servidores backend.
- Resiliencia – Si los clientes se conectan directamente a un servidor backend y este sufre un fallo, las solicitudes de todos los clientes conectados en ese momento (o que intentan conectarse) al servidor fallan. Un servidor proxy inverso puede supervisar el estado de los servidores backend y dejar de enviar solicitudes a un servidor que haya fallado hasta que vuelva a estar operativo. Los clientes no ven ningún error porque el proxy inverso envía automáticamente sus solicitudes a los servidores backend que siguen operativos.
- Escalabilidad – Dado que un proxy inverso es la única «cara pública» del grupo de servidores backend, puede añadir y eliminar servidores en función de los cambios en la carga de tráfico.
- Enrutamiento de capa 7: un proxy inverso ve el tráfico dirigido a todos los servidores y puede tomar decisiones inteligentes sobre dónde enviar cada solicitud, modificando las solicitudes y respuestas según sea necesario. Puede tomar decisiones de enrutamiento basándose en una determinada cabecera HTTP de la solicitud, una parte de una URL, la ubicación geográfica del cliente, etc.
- Almacenamiento en caché – Un proxy inverso es un lugar ideal para almacenar contenido en caché – normalmente es mucho más eficiente almacenarlo allí que enviar todas las solicitudes a los servidores backend y hacer que cada uno cree su propia caché.
- Otras funciones – Al situarse delante de los servidores backend, un proxy inverso también puede realizar otras funciones, como la gestión del tráfico en función del ancho de banda o la tasa de solicitudes, la limitación de conexiones, la integración con diversos sistemas de autorización, la supervisión de la actividad y mucho más.
Uso de NGINX Plus como proxy inverso
NGINX Plus incorpora aún más funcionalidades a las reconocidas capacidades de servidor web de NGINX Open Source, lo que convierte a NGINX Plus en un controlador de entrega de aplicaciones (ADC) con todas las funciones, capaz de sustituir a los dispositivos de hardware propietarios.
Estas son solo algunas de las funciones disponibles en NGINX Plus.
Balanceo de carga
Hay varios algoritmos de equilibrio de carga entre los que elegir, tanto ponderados como no ponderados. También se admite la persistencia de sesión. NGINX Plus puede equilibrar la carga de HTTP, HTTPS, WebSocket, FastCGI, memcached, SCGI, SPDY [sustituido por HTTP/2, cuya carga también equilibra NGINX Plus] y uwsgi. Más información.
Comprobaciones de estado
Se admite la supervisión tanto pasiva como activa del estado de los servidores backend. Si NGINX Plus no puede conectarse a un nodo, este se marca como inactivo. También se pueden configurar comprobaciones de estado activas para que se ejecuten periódicamente en los nodos backend. Además, se puede utilizar la función de inicio lento para que NGINX Plus aumente gradualmente el tráfico hacia un nodo que acaba de ponerse en línea, evitando así sobrecargarlo con un pico de tráfico intenso. Más información.
Enrutamiento de solicitudes
El tráfico se puede enrutar en función de cualquier parte de una solicitud, como la dirección IP del cliente, el nombre de host, el URI, la cadena de consulta, las cabeceras, etc.
Reescritura de solicitudes y respuestas
Se puede modificar cualquier parte de una solicitud o respuesta, incluidos los encabezados, el cuerpo y el URI. NGINX Plus también puede añadir y eliminar encabezados. Más información.
Almacenamiento en caché
Las respuestas se pueden almacenar en caché, y puedes configurar qué tipos de contenido se almacenan y durante cuánto tiempo. También puedes eliminar elementos de la caché. Más información.
Compresión
Se admite la compresión Gzip, con un control preciso sobre qué contenido comprimir y cuándo utilizar la compresión. Más información.
Procesamiento SSL/TLS
Se admiten el descifrado y el cifrado SSL/TLS, y es posible descifrar numerosos nombres de dominio mediante distintos certificados. Más información.
Supervisión y registro de la actividad en tiempo real
Las estadísticas de NGINX Plus codificadas en formato JSON están disponibles mediante una sencilla solicitud HTTP. Se proporciona una página web con un panel para mostrar las estadísticas, aunque también puede enviarlas a herramientas de supervisión personalizadas o de terceros. Es posible configurar registros con formato personalizado tanto para el registro local como para su exportación a syslog. Más información.
Y mucho más
NGINX ofrece muchas más funciones, como compatibilidad con la transmisión de vídeo, proxy de correo, GeoIP, reinicios controlados y actualizaciones sin tiempo de inactividad, gestión del tráfico, limitación de conexiones y mucho más. Para obtener más información, visite nginx.com y nginx.org.
Sobre el autor

Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.