Introducción a Nginx (¿Qué es Nginx? ¿Qué puede hacer?)

Generación de Nginx

  ¿Nunca has oído hablar de Nginx? ¡Entonces debe haber oído hablar de su "compañero" Apache! Al igual que Apache, Nginx es un servidor WEB. Basado en el estilo de arquitectura REST, utiliza el URI del Identificador de recursos uniforme (Uniform Resources Identifier) ​​o la URL del Localizador de recursos uniforme (Uniform Resources Locator) como base de comunicación, y proporciona varios servicios de red a través de el protocolo HTTP. .

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

  El período de desarrollo de Apache es muy largo y es el servidor número uno indiscutible del mundo. Tiene muchas ventajas: estabilidad, código abierto, multiplataforma, etc. Ha existido durante demasiado tiempo, y en la época en que surgió, la industria de Internet era muy inferior a lo que es ahora. Así que fue diseñado para ser un peso pesado. Es un servidor que no soporta alta concurrencia. Ejecutar decenas de miles de accesos simultáneos en Apache hará que el servidor consuma mucha memoria. Cambiar entre procesos o subprocesos por parte del sistema operativo también consume una gran cantidad de 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 nació el servidor ligero y de alta concurrencia Nginx.

  El ingeniero ruso Igor Sysoev, quien desarrolló Nginx en C mientras trabajaba para Rambler Media. Como servidor WEB, Nginx ha estado brindando servicios excelentes y estables para Rambler Media.

Luego, Igor Sysoev abrió el código Nginx y le otorgó una licencia de software libre.

  porque:

  • Nginx utiliza una arquitectura basada en eventos que le permite admitir millones de conexiones TCP
  • Un alto grado de modularidad y licencias de software libre hacen que los módulos de terceros surjan sin cesar (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
  • Estos excelentes diseños aportan una gran estabilidad.

  Entonces, ¡Nginx está en llamas!

Donde entra Nginx

  Nginx es un servidor HTTP gratuito, de código abierto y de alto rendimiento y un servidor proxy inverso; también es un servidor proxy IMAP, POP3, SMTP; Nginx se puede usar como un servidor HTTP para el procesamiento de lanzamiento de sitios web, y Nginx se puede usar como un servidor proxy inverso El proxy implementa el equilibrio de carga.

Sobre el agente

  Cuando se trata de agencia, primero debemos aclarar un concepto, la llamada agencia es un representante y un canal;

  En este momento, hay dos roles involucrados, uno es el rol de proxy y el otro es el rol de destino. El proceso por el cual el rol de proxy accede al rol de destino a través de este proxy para completar algunas tareas se denomina proceso de operación de proxy; es como una tienda especializada en la vida ~ los clientes van a adidas Cuando una tienda especializada compra un par de zapatos, la tienda especializada es el agente, el rol del agente es el fabricante de adidas y el rol objetivo es el usuario.

reenviar proxy

  Antes de hablar sobre el proxy inverso, echemos un vistazo al proxy de reenvío. El proxy de reenvío también es el modo de proxy con el que más entra en contacto todo el mundo. Hablaremos sobre el modo de procesamiento del proxy de reenvío desde dos aspectos, desde el aspecto del software y la vida Permítanme explicar lo que es un proxy de reenvío.

  En el entorno de red actual, si queremos visitar algunos sitios web extranjeros debido a necesidades técnicas, encontrará que no podemos acceder a un sitio web extranjero a través de un navegador. En este momento, todos pueden usar una operación FQ Para acceder, la forma de FQ es principalmente para encontrar un servidor proxy que pueda acceder a sitios web extranjeros, enviaremos la solicitud al servidor proxy, el servidor proxy visitará sitios web extranjeros y luego nos pasará los datos accedidos.

  El modo de proxy anterior se llama proxy de reenvío. La característica más importante del proxy de reenvío es que el cliente tiene muy clara la dirección del servidor al que se accede ; el servidor solo sabe de qué servidor proxy proviene la solicitud, pero no de qué cliente específico. proviene; reenvía la máscara de patrones de proxy u oculta la información real del cliente . Veamos un diagrama esquemático (enmarco al cliente y al proxy de reenvío juntos, que pertenecen al mismo entorno, y lo presentaré más adelante):

  El cliente debe configurar un servidor proxy de reenvío , por supuesto, la premisa es conocer la dirección IP del servidor proxy de reenvío y el puerto del programa proxy. Como se muestra en la imagen.

  En resumen: Forward proxy, "actúa como el cliente y envía solicitudes en nombre del cliente", es un servidor ubicado entre el cliente y el servidor original (servidor de origen), para obtener contenido del servidor original, el cliente envía a El proxy envía una solicitud y especifica el destino (servidor de origen), luego el proxy reenvía la solicitud al servidor de origen 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 proxy de reenvío:
(1) Acceder a recursos a los que no se puede acceder antes, como Google
(2) Se puede usar como caché para acelerar el acceso a los recursos
(3) Autorizar el acceso del cliente y autenticar Internet
(4) El proxy puede registrar registros de acceso de usuarios (gestión del comportamiento de Internet), ocultar información del usuario del mundo exterior

proxy inverso

  Después de comprender qué es un proxy directo, sigamos viendo cómo lidiar con el proxy inverso. Por ejemplo, cierto sitio web del tesoro de My Great Heavenly Dynasty, la cantidad de visitantes que se conectan al sitio web a la misma hora todos los días se ha disparado. , y un solo servidor está lejos de poder satisfacer las crecientes necesidades de la gente. El deseo de comprar, en este momento, apareció un término familiar: implementación distribuida; es decir, para resolver el problema de limitar el número de visitantes por implementando múltiples servidores; la mayoría de las funciones de un sitio web del tesoro también se implementan directamente mediante un proxy inverso usando Nginx Sí, 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. información: http://tengine.taobao.org/. Entonces, ¿qué tipo de método utiliza el proxy inverso para realizar la operación del clúster distribuido? Veamos primero un diagrama esquemático (enmarco el servidor y el proxy inverso juntos, y pertenecen al mismo entorno. Lo presentaré más adelante):

  A través de la ilustración anterior, puede ver claramente que después de recibir las solicitudes enviadas por varios clientes al servidor, el servidor Nginx las distribuye al servidor de procesamiento comercial de back-end de acuerdo con ciertas reglas de procesamiento. En este momento ~ la fuente de la solicitud es que el cliente está claro, pero no está claro qué servidor procesa la solicitud. Nginx desempeña el papel de un proxy inverso.

  El cliente desconoce la existencia del proxy, y el proxy inverso es transparente para el mundo exterior, y el visitante no sabe que está visitando un proxy. Porque el cliente puede acceder sin ninguna configuración.

  El proxy inverso, "actúa como un proxy para el servidor y recibe solicitudes en nombre del servidor" , se utiliza principalmente en el caso de la implementación distribuida de clústeres de servidores, y el proxy inverso oculta la información del servidor.

  La función del proxy inverso:
(1) Para garantizar la seguridad de la intranet, generalmente se usa el proxy inverso como la dirección de acceso a la red pública, y el servidor web es la intranet (2)
Equilibrio de carga, optimice la carga del sitio web a través de el servidor proxy inverso

escena del proyecto

  Por lo general, cuando operamos el proyecto real, es probable que existan el proxy de reenvío y el proxy inverso en un escenario de aplicación. El proxy de reenvío actúa como un proxy para la solicitud del cliente para acceder al servidor de destino. El servidor de destino es un servidor de interés simple inverso. ., proxy inverso múltiples servidores de procesamiento de negocios reales. El diagrama de topología específico es el siguiente:

diferencia entre los dos

  Se tomó una imagen para ilustrar la diferencia entre el proxy directo y el proxy inverso, como se muestra en la figura.

 

En el proxy de reenvío, el Proxy y el Cliente pertenecen a la misma LAN (en el cuadro de la figura), lo que oculta la información del cliente;

En el proxy inverso, Proxy y Servidor pertenecen a la misma LAN (en el recuadro de la figura), lo que oculta la información del servidor;

De hecho, lo que hace Proxy en los dos tipos de proxies es reemplazar el servidor para enviar y recibir solicitudes y respuestas, pero desde el punto de vista estructural, resulta estar intercambiado, por lo que el método de proxy que apareció más tarde se llama proxy inverso. .

balanceo de carga

  Hemos aclarado el concepto del llamado servidor proxy, por lo que, a continuación, Nginx desempeña el papel de un servidor proxy inverso. ¿Qué reglas utiliza para distribuir las solicitudes? Para diferentes escenarios de aplicación de proyectos, ¿se pueden controlar las reglas de distribución?

  La cantidad de solicitudes enviadas por el cliente y recibidas por el servidor proxy inverso Nginx mencionado aquí es lo que llamamos carga.

  La regla de que el número de solicitudes se distribuye a diferentes servidores para su procesamiento de acuerdo con ciertas reglas es una especie de regla de equilibrio.

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

  En el proceso real de operación del proyecto de balanceo de carga, hay dos tipos de balanceo de carga de hardware y balanceo de carga de software.El balanceo de carga de hardware también se denomina carga dura, como el balanceo de carga F5, que es relativamente costoso y costoso, pero la estabilidad y la seguridad de datos, etc. Hay muy buenas garantías. Las empresas como China Mobile y China Unicom elegirán cargas duras para operar; más empresas optarán por utilizar el balanceo de carga de software por razones de costo. El balanceo de carga de software utiliza tecnologías existentes combinadas con hardware host A Mecanismo de distribución de colas de mensajes implementado.

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

  1. Sondeo de peso (predeterminado, de uso común, ¡con efecto HA!): Las solicitudes recibidas se asignan a diferentes servidores de back-end de acuerdo con sus pesos. Incluso si un servidor de back-end deja de funcionar durante el uso, Nginx eliminará automáticamente el servidor Dequeue, la aceptación de la solicitud no ser afectado de alguna manera. De esta manera, puede establecer un valor de peso (peso) para diferentes servidores back-end para ajustar la tasa de asignación de solicitudes en diferentes servidores; cuanto mayor sea el dato de peso, mayor será la probabilidad de ser asignado a la solicitud; el valor de peso , Se ajusta principalmente para diferentes configuraciones de hardware de servidor back-end en el entorno de trabajo real.
  2. ip_hash (comúnmente utilizado): cada solicitud se asigna de acuerdo con el resultado hash de la ip de acceso, de modo que cada visitante accede a un servidor backend de forma fija, lo que también resuelve el problema de compartir sesiones en un entorno de implementación de clúster hasta cierto punto.
  3. Justo: ajusta de forma inteligente el algoritmo de programación y equilibra dinámicamente la asignación de acuerdo con el tiempo desde el procesamiento de la solicitud hasta la respuesta del servidor back-end. Los servidores con un tiempo de respuesta corto y una alta eficiencia de procesamiento tienen una alta probabilidad de ser asignados a solicitudes y servidores. con tiempo de respuesta largo y baja eficiencia de procesamiento se asignan Menos solicitudes, un algoritmo de programación que combina las ventajas de los dos anteriores. 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.
  4. url_hash: asigne solicitudes de acuerdo con el resultado hash de la URL a la que se accedió. La URL de cada solicitud apuntará a un servidor fijo en el backend, lo que puede mejorar la eficiencia de la memoria caché cuando Nginx se usa como un servidor estático. También tenga en cuenta que Nginx no admite este algoritmo de programación de forma predeterminada. Si desea usarlo, debe instalar el paquete hash de Nginx.

 Comparación de varios servidores web de uso común

Comparar elemento\servidor apache Nginx luztpd
apoderado proxy muy bien muy bien generalmente
reescritor bien muy bien generalmente
Fcgi no es bueno bien muy bien
despliegue en caliente no apoyo apoyo no apoyo
Presión del sistema muy grande muy pequeña menor
estabilidad bien muy bien no es bueno
seguridad bien generalmente generalmente
Manejo de archivos estáticos generalmente muy bien bien
proxy inverso generalmente muy bien generalmente

Supongo que te gusta

Origin blog.csdn.net/weixin_45925028/article/details/132316235
Recomendado
Clasificación