¿Cuáles son las ventajas de usar un servidor nginx como proxy inverso en lugar de conectarse directamente al servidor subyacente?

Con la descarga / terminación de SSL , los servidores proxy front-end pueden manejar conexiones SSL con clientes públicos usando aceleración de hardware, mientras que la comunicación con los servidores básicos se maneja en una red privada con HTTP regular en puertos no estándar (por ejemplo, 8080). Esto también reduce la necesidad de distribuir claves privadas de certificados SSL a muchas máquinas, lo que puede mejorar la seguridad .

Tener los servidores de aplicaciones en una red privada también puede mejorar su seguridad, ya que están aislados del acceso público directo.

Los servidores proxy inversos pueden equilibrar las conexiones de carga a los servidores de aplicaciones y elegir puntos finales geográficamente apropiados para reducir la latencia. Esto también proporciona más control sobre los procesos de conmutación por error , donde las máquinas de backend que fallan se pueden sacar de la rotación sin problemas.

El rendimiento puede mejorarse mediante el proxy inverso que maneja el contenido estático y el almacenamiento en caché por separado de las solicitudes de la aplicación. Esto mantiene el tráfico innecesario fuera de los servidores de aplicaciones. Por ejemplo, es un desperdicio girar un proceso de Apache con mod_php5 y varias extensiones solo para servir una imagen PNG, una hoja de estilo CSS o un archivo fuente Javascript. Estos se pueden servir desde un caché (como Varnish) o una red de entrega de contenido (CDN) como CloudFront.

Además, la administración del servidor se puede simplificar al tener capas distintas para servidores web y servidores de aplicaciones. Los servidores de aplicaciones pueden desactivarse para mantenimiento sin afectar el tráfico HTTP normal (entre DNS y los equilibradores de carga). Las diferentes rutas en el mismo dominio se pueden enrutar sin problemas a diferentes máquinas de back-end.

Además de todas las optimizaciones que utiliza un servidor web como nginx para aumentar la eficiencia del servicio de contenido estático, la mayor ventaja es probablemente abordar el problema de los clientes lentos.

Muchos servidores de aplicaciones no lo manejan bien cuando hay un retraso en el servidor que recibe la solicitud o cuando el cliente recibe la respuesta debido a la latencia del servicio de tráfico a través de Internet. Un proxy inverso brinda la capacidad de amortiguar eso al aceptar la conexión tcp o la respuesta http en nombre del servidor de aplicaciones, liberando así al trabajador de la aplicación para que pase menos tiempo esperando y más tiempo procesando solicitudes.

Ver The Philosophy Behind unicorn para una explicación más completa.

Seguridad de los datos que intenta transmitir a los servidores. Algunos servicios lo implementan para limitar el número de solicitudes por segundo y aumentar la resistencia a los ataques malignos.

More Interesting

¿Cuáles crees que son las tres mejores aplicaciones web y por qué?

¿Qué tan difícil es escalar las aplicaciones web de Python?

¿Cuáles son tus experiencias con Firebase?

¿Debo dejar Android y comenzar a aprender desarrollo web?

¿Cuál debería ser mi próximo paso lógico después de crear pantallas de maquetas para mi aplicación?

¿Cómo se usan exactamente cosas como bucles y funciones en el desarrollo web? Por favor, da un ejemplo simple.

¿Cómo pueden algunos desarrolladores dominar nuevos marcos o tecnologías en el desarrollo web en poco tiempo después de su lanzamiento?

¿ProofHub es la mejor alternativa de Basecamp?

Estoy buscando patrones de IU útiles que faciliten la creación de un objeto complejo o actividad de entidad / registro de cambios para un CRM. Las entidades incluyen un cliente potencial (cliente futuro o actual) con sus datos personales, direcciones de envío, pedidos, conversaciones por correo electrónico, teléfono y mensajes de texto, etc. ¿Cómo hago esto?

¿Qué marco es bueno para crear una aplicación de Android y una aplicación web en Python?

¿Por qué Quora tiene una interfaz mediocre mientras que la mayoría de las nuevas empresas basadas en web tienen una interfaz de usuario increíble?

¿Cuál es la diferencia entre la aplicación basada en web y la aplicación basada en ventana?

¿Por dónde empezar para crear una aplicación web que realice una gran cantidad de consultas a la base de datos? ¿Cómo almacenar en caché para reducir el impacto de la base de datos?

¿Cuáles son sus opiniones sobre el futuro del desarrollo web y el desarrollo de software en India?

¿Qué marco PHP debería o puedo usar para crear una aplicación web de sistema de control de inventario y verificación de equipos?