Por qué encuentro Nginx prácticamente mejor que Apache

Por qué encuentro Nginx prácticamente mejor que Apache

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

Apache. es un servidor HTTP gratuito de código abierto para sistemas operativos tipo Unix y Windows. Fue diseñado para ser un servidor seguro, eficiente y extensible que proporciona servicios HTTP en sincronía con los estándares HTTP predominantes.

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

Nginx. (pronunciado “ Engine-x. ) es una aplicación gratuita de código abierto, servidor HTTP de alto rendimiento, proxy inverso y un servidor proxy IMAP/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, a lo largo de los años se ha vuelto tan popular y su el uso en Internet se dirige a mayores alturas. Ahora es el servidor web elegido por los administradores de sistemas experimentados o los webmasters de los mejores sitios.

freestar.config.enabled_slots.push

Algunos de los sitios ocupados con la tecnología de.

  • Apache. son: PayPal, BBC.com, BBC.co.uk, SSLLABS.com, Apple.com y mucho más.
  • Nginx. son: Netflix, Udemy.com, Hulu, Pinterest, CloudFlare, WordPress.com, GitHub, SoundCloud y muchos otros.

Hay numerosos recursos ya publicados en la web sobre la comparación entre Apache. y Nginx. (realmente me refiero a ‘ Apache Vs Nginx. ‘), muchos de los cuales explican claramente en detalle, sus principales características y operaciones 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, después de haber probado Apache. y Nginx. ambos en entornos de producción basados ​​en los requisitos para alojar aplicaciones web modernas, en la siguiente sección.

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

A continuación se presentan las razones por las que prefiero el servidor web Nginx a Apache para la entrega de contenido web moderno:

1. Nginx es liviano

Nginx. es uno de los servidores web livianos que existen. Tiene una pequeña huella en un sistema en comparación con Apache, que implementa una amplia gama de funcionalidades necesarias para ejecutar una aplicación.

Debido a que Nginx reúne un puñado de funciones principales, se basa en servidores web ascendentes de terceros dedicados. como un servidor Apache backend, FastCGI, Memcached, SCGI y uWSGI o un servidor de aplicaciones, es decir, servidores específicos de idioma como Node.js, Tomcat, etc.

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

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

A diferencia de la arquitectura de Apache orientada a procesos o subprocesos (proceso por conexión o subproceso por modelo de conexión), Nginx. utiliza una arquitectura escalable impulsada por eventos (asincrónica). 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 lectura de la configuración y la vinculación a los puertos) y que crea varios procesos de trabajo y ayudantes .

Cada uno de los procesos de trabajo puede manejar miles de conexiones HTTP simultáneamente, leer y escribir contenido en el disco y comunicarse con servidores ascendentes. Los procesos auxiliares (administrador de caché y cargador de caché) 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 y favorable para aplicaciones modernas. Además, los módulos de terceros se pueden utilizar para ampliar las funcionalidades nativas en Nginx.

3. Nginx es fácil de configurar

Nginx. tiene una estructura de archivo de configuración simple, lo que lo hace super fácil de configurar. Consiste en módulos que están controlados por 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 mediante llaves (y). Si una directiva de bloque puede tener otras directivas entre llaves, se denomina 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 termina con un punto y coma (;).

http server location/## esta es una directiva simple llamada root root/var/www/hmtl/example.com/;

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

http server ## ejemplos de inclusión de archivos de configuración adicionales incluyen/path/to/config/file/*.conf ; incluir/path/to/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 pequeño desafío con Apache.

4. Nginx es un excelente proxy de interfaz

Uno de los usos comunes de Nginx. es configurarlo como un servidor proxy, en este caso recibe solicitudes HTTP de los clientes y las pasa a servidores proxy o upstream que se mencionaron anteriormente, a través de 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 las respuestas de los servidores proxy y las pasa a los clientes. Es mucho 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 entregar contenido estático

El contenido o archivos estáticos suelen ser archivos almacenados en disco en la computadora servidor, por ejemplo, archivos CSS, archivos JavaScripts o imágenes. Consideremos un escenario en el que utiliza Nginx como interfaz para Nodejs (el servidor de aplicaciones).

Aunque el servidor Nodejs (específicamente los frameworks Node) tiene funciones integradas para el manejo de archivos estáticos, no es necesario que lo hagan algún procesamiento intensivo para entregar contenido no dinámico, por lo tanto, es prácticamente beneficioso configurar el servidor web para entregar contenido estático directamente a los clientes.

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

6. Nginx es un equilibrador de carga eficiente

Para lograr un alto rendimiento y tiempo de actividad para las aplicaciones web modernas, puede requerir la ejecución de múltiples instancias de aplicaciones en un servidor HTTP único o distribuido. Esto, a su vez, puede requerir la configuración del equilibrio de carga para distribuir la carga entre sus servidores HTTP.

Hoy en día, 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 rendimiento, logrando redundancia y estableciendo configuraciones tolerantes a fallas en múltiples instancias de aplicaciones.

Nginx usa los siguientes métodos de balanceo de carga:

  • round-robin. (método predeterminado): las solicitudes a los servidores ascendentes se distribuyen de manera rotatoria (en el orden de la lista de servidores en el grupo ascendente).
  • menos conectados. aquí la siguiente solicitud se envía al servidor con el menor número de conexiones activas.
  • ip-hash. aquí se usa una función hash para determinar qué servidor debe ser seleccionado para la siguiente solicitud (según la dirección IP del cliente).
  • Hash genérico. en este s, el administrador del sistema especifica un hash (o clave) con el texto dado, las variables de la solicitud o tiempo de ejecución, o su combinación. Por ejemplo, la clave puede ser una IP y un puerto de origen, o URI. Luego, Nginx distribuye la carga entre los servidores ascendentes generando un hash para la solicitud actual y colocándolo contra los servidores ascendentes.
  • Menos tiempo. (Nginx Plus): asigna la siguiente solicitud al servidor ascendente con la menor cantidad 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 Las aplicaciones web modernas y altamente escalables, especialmente las aplicaciones empresariales, exigen tecnología que proporcione alto rendimiento y escalabilidad.

Una empresa que se beneficia de las increíbles funciones de escalabilidad de Nginx es CloudFlare. que ha logrado escalar su aplicaciones web para manejar más de 15 mil millones de visitas de páginas mensuales con una infraestructura relativamente modesta, según Matthew Prince. cofundador y CEO de CloudFare.

Para obtener una explicación más completa, consulte este artículo sobre Blog de Nginx: NGINX vs.Apache: nuestra visión de una pregunta de una década.