Por qué encuentro a Nginx prácticamente mejor que Apache

Por qué encuentro a Nginx prácticamente mejor que Apache

Según la última encuesta del servidor web realizado por NetCraft, que se llevó a cabo a fines de 2017 (precisamente en noviembre), Apache y Nginx son los servidores web de código abierto más ampliamente utilizados en Internet.

apache es un servidor HTTP de código abierto gratuito para sistemas operativos y Windows tipo UNIX. Fue diseñado para ser un servidor seguro, eficiente y extensible que proporciona servicios HTTP sincronizados con los estándares HTTP prevalecientes.

Desde su lanzamiento, apache ha sido el servidor web más popular en Internet desde 1996. Es el estándar de facto para los servidores web en el ecosistema de código abierto y de código abierto. Los nuevos usuarios de Linux normalmente les resulta más fácil configurar y usar.

Nginx (pronunciado 'Motor-x') es un servidor HTTP de alto rendimiento libre, de código abierto, de alto rendimiento, proxy inverso y un servidor proxy IMAP3/POP3. Al igual que Apache, también se ejecuta en sistemas operativos similares a UNIX y Windows.

Bien conocido por su alto rendimiento, estabilidad, configuración simple y bajo consumo de recursos, se ha vuelto tan popular a lo largo de los años y su uso en Internet se dirige a mayores alturas. Ahora es el servidor web elegido entre los administradores de sistemas experimentados o los maestros web de los sitios principales.

Algunos de los sitios ocupados impulsados ​​por:

  • apache son: PayPal, BBC.com, BBC.co.Reino Unido, ssllabs.com, Apple.com más mucho más.
  • Nginx son: netflix, udemy.com, Hulu, Pinterest, Cloudflare, WordPress.com, Github, Soundcloud y muchos otros.

Existen numerosos recursos ya publicados en la Web con respecto a la comparación entre apache y Nginx (Realmente quiero decir 'Apache vs Nginx'artículos), muchos de los cuales explican claramente en detalle, sus características y operaciones principales en varios escenarios, incluidas las medidas de rendimiento en los puntos de referencia de laboratorio. Por lo tanto, eso no se abordará aquí.

Simplemente compartiré mi experiencia y pensamientos sobre todo el debate, habiendo probado apache y Nginx, Ambos en entornos de producción basados ​​en requisitos para alojar aplicaciones web modernas, en la siguiente sección.

Razones por las que encuentro a Nginx prácticamente mejor que Apache

Las siguientes son razones por las que prefiero el servidor web Nginx sobre Apache para la entrega moderna de contenido web:

1. Nginx es liviano

Nginx es uno de los servidores web livianos por ahí. Tiene pequeñas huellas en un sistema en comparación con Apache que implementa un gran alcance de funcionalidad necesario para ejecutar una aplicación.

Debido a que NGINX reúne un puñado de características centrales, se basa en servidores web de terceros dedicados de terceros, como un backend de Apache, FastCGI, Memcached, SCGI y UWSGI Servidores o servidores de aplicaciones, I, I I, I.E servidores específicos del lenguaje como el nodo.JS, Tomcat, etc.

Por lo tanto, su uso de memoria es mucho más adecuado para implementaciones de recursos limitadas que apache.

2. Nginx está diseñado para una alta concurrencia

A diferencia de la arquitectura orientada a procesos o de Apache (modelo de procesamiento por conconección o hilo-per-connection), Nginx Utiliza una arquitectura escalable, basada en eventos (asíncrono). Emplea un modelo de proceso responsable que se adapta a los recursos de hardware disponibles.

Tiene un proceso maestro (que realiza las operaciones privilegiadas, como la configuración de lectura y el enlace a los puertos) y que crea varios procesos de trabajadores y ayudantes.

Los procesos de los trabajadores pueden manejar cada uno miles de conexiones HTTP simultáneamente, leer y escribir contenido al disco, y comunicarse con los servidores aguas arriba. Los procesos auxiliares (Cache Manager y Cache Loader) pueden administrar las operaciones de almacenamiento en caché de contenido en disco.

Esto hace que sus operaciones sean escalables y dan como resultado un alto rendimiento. Este enfoque de diseño lo hace más rápido, favorable para aplicaciones modernas. Además, se pueden usar módulos de terceros para extender las funcionalidades nativas en Nginx.

3. Nginx es fácil de configurar

Nginx tiene una estructura de archivo de configuración simple, lo que la hace súper fácil de configurar. Consiste en módulos que están controlados por las directivas especificadas en el archivo de configuración. Además, las directivas se dividen en directivas de bloque y directivas simples.

Una directiva de bloque se define por aparatos y ). Si una directiva de bloque puede tener otras directivas dentro de los aparatos ortopédicos, se llama un contexto como eventos, http, servidor y ubicación.

http servidor  

Una directiva simple consiste en el nombre y los parámetros separados por espacios y extremos con un punto y coma (;).

http servidor ubicación/## Esta es una directiva simple llamada raíz root/var/www/hmtl/ejemplo.com/;  

Puede incluir archivos de configuración personalizados utilizando la directiva incluir, por ejemplo.

http servidor  ## Ejemplos de incluir archivos de configuración adicionales incluyen/path/to/config/file/*.conf; incluir/ruta/a/config/file/ssl.conf;  

Un ejemplo práctico para mí fue cómo logré configurar fácilmente Nginx para ejecutar múltiples sitios web con diferentes versiones de PHP, lo cual fue un poco desafío con Apache.

4. Nginx es un excelente proxy frontend

Uno de los usos comunes de Nginx lo está configurando como un servidor proxy, en este caso recibe solicitudes HTTP de los clientes y las pasa a servidores proxy o aguas arriba que se mencionaron anteriormente, en diferentes protocolos. También puede modificar los encabezados de solicitud del cliente que se envían al servidor proxy y configurar el almacenamiento en búfer de las respuestas provenientes de los servidores proxy.

Luego recibe respuestas de los servidores representados y los pasa a los clientes. Es más fácil de configurar como un servidor proxy en comparación con Apache, ya que los módulos requeridos están habilitados en la mayoría de los casos de forma predeterminada.

5. Nginx es notable para servir contenido estático

El contenido o los archivos estáticos se almacenan típicamente los archivos en el disco en la computadora del servidor, por ejemplo, archivos CSS, archivos o imágenes JavaScripts. Consideremos un escenario en el que usa NGINX como frontend para NodeJS (el servidor de aplicaciones).

Aunque el servidor NodeJS (específicamente los marcos de nodos) ha incorporado características para el manejo de archivos estáticos, no necesitan hacer un procesamiento intensivo para entregar contenido no dinámico, por lo tanto, es prácticamente beneficioso configurar el servidor web para servir contenido estático directamente clientela.

Nginx puede realizar un trabajo mucho mejor al manejar archivos estáticos desde un directorio específico, y puede evitar que las solicitudes de activos estáticos se asfixien de procesos de servidor ascendente. Esto mejora significativamente el rendimiento general de los servidores de backend.

6. Nginx es un equilibrador de carga eficiente

Para realizar un alto rendimiento y un tiempo de actividad para aplicaciones web modernas, pueden exigir ejecutar múltiples instancias de aplicación en un solo servidor HTTP distribuido o distribuidos. Esto a su vez puede requerir el equilibrio de carga para distribuir la carga entre sus servidores HTTP.

Hoy, el equilibrio de carga se ha convertido en un enfoque ampliamente utilizado para optimizar la utilización de recursos del sistema operativo, maximizar la flexibilidad, reducir la latencia, aumentar el rendimiento, lograr la redundancia y establecer configuraciones tolerantes a fallas, en múltiples instancias de aplicaciones.

Nginx utiliza los siguientes métodos de equilibrio de carga:

  • round-roBin (Método predeterminado): las solicitudes de los servidores aguas arriba se distribuyen de forma redonda (en orden de la lista de servidores en la piscina ascendente).
  • menos conectado - Aquí la siguiente solicitud está representada al servidor con la menor cantidad de conexiones activas.
  • hostil - Aquí se utiliza una función hash para determinar qué servidor debe seleccionarse para la próxima solicitud (según la dirección IP del cliente).
  • Hash genérico - Según este método, el administrador del sistema especifica un hash (o clave) con el texto, variables de la solicitud o tiempo de ejecución, o su combinación. Por ejemplo, la clave puede ser una IP y puerto de origen, o URI. Nginx luego distribuye la carga entre los servidores aguas arriba generando un hash para la solicitud actual y colocándola contra los servidores aguas arriba.
  • Menos tiempo (Nginx Plus): asigna la siguiente solicitud al servidor aguas arriba con el menor número de conexiones actuales, pero favorece a los servidores con los tiempos de respuesta promedio más bajos.

7. Nginx es altamente escalable

Además, Nginx es aplicaciones web altamente escalables y modernas, especialmente aplicaciones empresariales, demanda de tecnología que proporciona un alto rendimiento y escalabilidad.

Una compañía que se beneficia de las sorprendentes características de escalabilidad de Nginx es Marco de la nube, Se ha logrado escalar sus aplicaciones web para manejar más de 15 mil millones de vistas de página mensuales con una infraestructura relativamente modesta, según Matthew Prince, cofundador y CEO de Puesta en la nube.

Para obtener una explicación más completa, consulte este artículo en el blog de Nginx: Nginx vs. Apache: Nuestra visión de una pregunta de una década.

Conclusión

Ambos apache y Nginx no pueden ser reemplazados el uno por el otro, tienen sus puntos fuertes y débiles. Sin embargo, Nginx Ofrece una tecnología potente, flexible, escalable y segura para alimentar de manera confiable y eficiente sitios web y aplicaciones web. ¿Cuál es tu opinión?? Háganos saber a través del formulario de comentarios a continuación.