Un artículo para entender Nginx

Generación de Nginx

Nginx es un servidor web como Apache . Basado en el estilo arquitectónico REST, el identificador de recursos uniformes URI o URL de localización de recursos uniformes se utiliza como base de comunicación para proporcionar diversos servicios de red a través del protocolo HTTP.

Sin embargo, estos servidores estaban limitados por el entorno al comienzo del diseño, como el tamaño de los usuarios, el ancho de banda de la red y las características del producto en ese momento, y su respectivo posicionamiento y desarrollo eran diferentes. Esto también hace que cada servidor web tenga sus propias características distintivas.

Apache tiene una larga historia de desarrollo, y es el servidor más grande del mundo. Tiene muchas ventajas: estable, de código abierto, multiplataforma, etc.

Ha existido durante demasiado tiempo. En la era de su surgimiento, la industria de Internet es mucho menos de lo que es ahora. Por lo tanto, está diseñado como un peso pesado.

No es compatible con servidores altamente concurrentes. Ejecutar decenas de miles de accesos simultáneos en Apache hará que el servidor consuma mucha memoria.

El cambio del sistema operativo entre procesos o subprocesos también consume muchos recursos de la CPU, lo que resulta en una disminución en la velocidad de respuesta promedio de las solicitudes HTTP.

Todo esto determina que Apache no puede convertirse en un servidor web de alto rendimiento, y surgió el servidor ligero y altamente concurrente Nginx.

El ingeniero ruso Igor Sysoev, quien desarrolló Nginx en C mientras trabajaba para Rambler Media.

Como servidor web, Nginx siempre ha brindado servicios excelentes y estables para Rambler Media. Luego, Igor Sysoev abrió el código Nginx y le dio una licencia de software libre.

Debido a los siguientes puntos, Nginx está en llamas:

 

  • Nginx utiliza una arquitectura basada en eventos, que le permite soportar millones de conexiones TCP.

  • El alto grado de modularidad y las licencias de software libre han llevado a la aparición de módulos de terceros (esta es una era de código abierto).

  • Nginx es un servidor multiplataforma que puede ejecutarse en Linux, Windows, FreeBSD, Solaris, AIX, Mac OS y otros sistemas operativos.

  • Gran estabilidad aportada por estos excelentes diseños.

     

Donde entra Nginx

 

Nginx es un servidor HTTP gratuito, de código abierto, de alto rendimiento y servidor proxy inverso; también es un servidor proxy IMAP, POP3, SMTP.

 

Nginx se puede usar como un servidor HTTP para publicar el sitio web. Además, Nginx se puede usar como un proxy inverso para el equilibrio de carga.

 

Sobre el agente

 

Hablando de agencia, primero debemos aclarar un concepto, la llamada agencia es un representante, un canal; esta vez involucra dos roles, uno es el rol del agente, el otro es el rol objetivo.

 

El proceso en el que el rol de agente accede al rol objetivo para completar algunas tareas a través de este agente se llama el proceso de operación del agente; al igual que la tienda en la vida, el cliente compra un par de zapatos en la tienda adidas, esta tienda es el agente y el rol de agente es el fabricante de adidas. El rol objetivo es el usuario.

 

Agente delantero

 

Antes de hablar sobre proxies inversos, echemos un vistazo a los proxies hacia adelante. Los proxies hacia adelante también son los modos proxy más comunes. Hablaremos sobre el modo de procesamiento de proxies hacia adelante desde dos aspectos, desde el software y los aspectos de la vida. Déjame explicarte qué es un agente avanzado.

 

En el entorno de red actual, si vamos a visitar ciertos sitios web en el extranjero debido a necesidades técnicas, encontrará que no hay forma de que podamos visitar un sitio web ubicado en un país extranjero a través de un navegador.

 

En este momento, todos pueden usar una operación FQ para acceder. La forma de FQ es encontrar un servidor proxy que pueda acceder a sitios web extranjeros. Enviamos la solicitud al servidor proxy. El servidor proxy visita el sitio web extranjero y luego pasa los datos accedidos. ¡Danos!

 

El modo proxy anterior se llama proxy directo. La característica más importante del proxy directo es que el cliente conoce mucho la dirección del servidor; el servidor solo sabe de qué servidor proxy proviene la solicitud, pero no de qué cliente específico; proxy directo Los modos bloquean u ocultan información real del cliente.

 

Veamos un diagrama esquemático (puse el cliente y el proxy de reenvío juntos en el mismo entorno, que presentaré más adelante):

 

 

El cliente debe establecer un servidor proxy directo, por supuesto, la premisa es conocer la dirección IP del servidor proxy directo y el puerto del programa proxy.

 

Como se muestra a continuación:

 

En resumen: el proxy directo, "el proxy es el cliente", es un servidor entre el cliente y el servidor original (servidor de origen), para obtener contenido del servidor original, el cliente envía una solicitud al proxy y especifica Destino (servidor de origen).

 

El agente reenvía la solicitud al servidor original y devuelve el contenido obtenido al cliente. El cliente debe realizar algunas configuraciones especiales para usar el proxy de reenvío.

 

El propósito del agente delantero:

 

  • Acceda a recursos que antes eran inaccesibles, como Google.

  • Se puede usar como caché para acelerar el acceso a los recursos.

  • Autorice el acceso del cliente y navegue por Internet.

  • El agente puede registrar registros de acceso de usuarios (gestión de comportamiento en línea) y ocultar información del usuario desde el exterior.

 

Proxy inverso

 

Comprenda qué es un proxy directo, seguimos analizando el manejo de los proxy inversos Demasiado

 

En este momento, apareció un término bien conocido: implementación distribuida; es decir, implementación de múltiples servidores para resolver el problema de limitar el número de visitantes.

 

La mayoría de las funciones en un sitio web de tesoros también se implementan directamente usando Nginx para proxy inverso, y después de encapsular Nginx y otros componentes, tiene un nombre alto: Tengine.

 

Los zapatos para niños interesados ​​pueden visitar el sitio web oficial de Tengine para ver información específica:

 

http://tengine.taobao.org/

 

 

Entonces, ¿qué tipo de operación de clúster distribuido implementa específicamente el proxy inverso? Veamos primero un diagrama esquemático (puse el servidor y la caja de proxy inverso juntos y pertenezco al mismo entorno, lo presentaré más adelante):

 

A través de la ilustración anterior, puede ver claramente que las solicitudes enviadas por varios clientes al servidor son distribuidas por el servidor Nginx al servidor de procesamiento empresarial de back-end para procesar de acuerdo con ciertas reglas.

 

En este momento, el origen de la solicitud, es decir, el cliente es claro, pero no está claro por qué servidor procesa la solicitud. Nginx juega un rol de proxy inverso.

 

El cliente es un proxy no consciente, el proxy inverso es transparente al exterior y el visitante no sabe que está accediendo a un proxy. Porque el cliente puede acceder sin ninguna configuración.

 

Proxy inverso, "Proxy es el servidor", utilizado principalmente en el caso de la implementación distribuida de clústeres de servidores, el proxy inverso oculta la información del servidor.

 

El papel del proxy inverso:

 

  • Para garantizar la seguridad de la intranet, el proxy inverso se usa generalmente como la dirección de acceso a la red pública, y el servidor web es la intranet.

  • Equilibrio de carga, a través de un servidor proxy inverso para optimizar la carga del sitio web.

Escena del proyecto

 

Por lo general, cuando estamos en la operación real del proyecto, es probable que el proxy directo y el proxy inverso existan en el mismo escenario de aplicación. El cliente proxy proxy directo solicita acceder al servidor objetivo. El servidor objetivo es un servidor proxy inverso. El proxy inverso tiene múltiples servidores de procesamiento de negocios reales.

 

El diagrama de topología específico es el siguiente:

Corte una imagen para ilustrar la diferencia entre el proxy directo y el proxy inverso, como se muestra a continuación:

 

Ilustración:

 

  • En el proxy directo, Proxy y Cliente pertenecen a la misma LAN (en el cuadro de la figura), ocultando la información del cliente.

  • En proxy inverso, Proxy y Servidor pertenecen a la misma LAN (en el cuadro de la figura), ocultando la información del servidor.

 

De hecho, lo que hace Proxy en ambos tipos de proxy es enviar y recibir solicitudes y respuestas en nombre del servidor, pero desde el punto de vista estructural, se trata de derecha e izquierda, por lo que el método de proxy que aparece más adelante se llama proxy inverso.

 

Balanceo de carga

 

Ya hemos aclarado el concepto del llamado servidor proxy, entonces, Nginx desempeña el papel de servidor proxy inverso, de acuerdo con qué reglas distribuye las solicitudes. Para escenarios de aplicación de proyecto no utilizados, ¿se pueden controlar las reglas de distribución?

 

El número de solicitudes enviadas por el cliente mencionado aquí y recibidas por el servidor proxy inverso Nginx es lo que llamamos la carga.

 

El número de solicitudes se distribuye de acuerdo con ciertas reglas, y las reglas para procesar a diferentes servidores son una especie de reglas de equilibrio.

 

Por lo tanto, el proceso de distribución de las solicitudes recibidas por el servidor de acuerdo con las reglas se denomina equilibrio de carga.

 

Equilibrio de carga En el proceso real de operación del proyecto, hay dos tipos de equilibrio de carga de hardware y equilibrio de carga de software: el equilibrio de carga de hardware también se denomina carga dura, como el equilibrio de carga F5, que es relativamente costoso y costoso.

 

Sin embargo, la estabilidad y la seguridad de los datos están muy bien garantizadas, y compañías como China Mobile y China Unicom elegirán cargas difíciles para operar.

 

Considerando las razones de costo, más compañías elegirán usar el equilibrio de carga de software El equilibrio de carga de software es un mecanismo de distribución de colas de mensajes implementado utilizando la tecnología existente combinada con hardware host.

 

El algoritmo de programación de equilibrio de carga compatible con Nginx es el siguiente:

 

① sondeo de peso (predeterminado): las solicitudes recibidas se asignan a diferentes servidores de fondo uno por uno en orden, incluso si un servidor de fondo se cae durante el uso, Nginx eliminará automáticamente el servidor de la cola y solicitará la aceptación No se verá afectado de ninguna manera.

 

De esta forma, se puede establecer un valor de peso para diferentes servidores de fondo para ajustar la tasa de asignación de solicitudes en diferentes servidores.

 

Cuanto mayores sean los datos de peso, mayor será la probabilidad de ser asignado a la solicitud; el valor de peso se ajusta principalmente para diferentes configuraciones de hardware del servidor de fondo en el entorno de trabajo real.

 

②ip_hash: cada solicitud coincide con el resultado de hash de la IP que inició el cliente. Bajo este algoritmo, un cliente con una dirección IP fija siempre accederá al mismo servidor de fondo, que también resuelve la sesión en el entorno de despliegue del clúster en cierta medida. El problema de compartir.

 

③fair: ajuste de forma inteligente el algoritmo de programación para asignar dinámicamente el tiempo desde el procesamiento de la solicitud del servidor de fondo hasta la respuesta.

 

Un servidor con un tiempo de respuesta corto tiene una alta probabilidad de asignar solicitudes a un servidor con alta eficiencia de procesamiento, y un servidor con un tiempo de respuesta bajo tiene pocas solicitudes para asignar a un servidor con baja eficiencia de procesamiento.

 

Sin embargo, debe tenerse en cuenta que Nginx no es compatible con el algoritmo justo de forma predeterminada. Si desea utilizar este algoritmo de programación, instale el módulo upstream_fair.

 

④url_hash: distribuya las solicitudes de acuerdo con el resultado hash de la URL accedida. Cada URL solicitada apuntará a un servidor fijo en el back-end, lo que puede mejorar la eficiencia de la memoria caché cuando se utiliza Nginx como servidor estático.

 

También tenga en cuenta que Nginx no admite este algoritmo de programación de forma predeterminada. Para usarlo, debe instalar el paquete hash de Nginx.

 

Comparación del servidor web

 

La comparación de varios servidores web de uso común es la siguiente:

81 artículos originales publicados · Me gusta 69 · Visitantes 50,000+

Supongo que te gusta

Origin blog.csdn.net/s2603898260/article/details/103849034
Recomendado
Clasificación