![Cómo desactivar hilos en Instagram (2 métodos)](/f/a9a4d934e0b8ad2e9e859d1a2c487b0e.jpg?width=100&height=100)
Según las últimas encuesta de servidor web 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 servidor web más popular en Internet desde 1996. Es el estándar de facto para servidores web en el ecosistema Linux y de código abierto. Los nuevos usuarios de Linux normalmente lo encuentran más fácil de configurar y usar.
Nginx (pronunciado "Motor-x’) Es un servidor HTTP gratuito, de código abierto y 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 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.
Algunos de los sitios ocupados que funcionan con:
Existen 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 las pruebas 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, tanto en entornos de producción basados en requisitos para alojar aplicaciones web modernas, en la siguiente sección.
Las siguientes son las razones por las que prefiero el servidor web Nginx sobre Apache para la entrega de contenido web moderno:
Nginx es uno de los servidores web ligeros que existen. Tiene pequeñas huellas 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 Apache. servidores backend, FastCGI, Memcached, SCGI y uWSGI o servidor de aplicaciones, es decir, servidores de idiomas específicos como Node.js, Tomcat, etc.
Por lo tanto, su uso de memoria es mucho más adecuado para implementaciones de recursos limitados, que apache.
A diferencia de la arquitectura orientada a procesos o subprocesos de Apache (modelo de proceso por conexión o subproceso por 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 ayuda.
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 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 aún más rápido y favorable para aplicaciones modernas. Además, se pueden utilizar módulos de terceros para ampliar las funcionalidades nativas en Nginx.
Nginx tiene una estructura de archivos de configuración simple, por lo que es muy 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 consta del 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 utilizando 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 varios sitios web con diferentes versiones de PHP, que fue un pequeño desafío con Apache.
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 ascendentes 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 respuestas de los servidores proxy y las pasa a los clientes. Es mucho más fácil de configurar como servidor proxy en comparación con Apache, ya que los módulos necesarios están habilitados en la mayoría de los casos de forma predeterminada.
El contenido o los archivos estáticos suelen ser archivos almacenados en el disco de 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 marcos de trabajo de Node) tiene funciones integradas para el manejo de archivos estáticos, no necesitan hacer procesamiento para entregar contenido no dinámico, por lo tanto, es prácticamente beneficioso configurar el servidor web para entregar contenido estático directamente a clientela.
Nginx puede realizar un trabajo mucho mejor en el manejo de 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.
Para lograr un alto rendimiento y tiempo de actividad para las aplicaciones web modernas, es posible que sea necesario ejecutar varias 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 y reducir latencia hacia abajo, aumentando el rendimiento, logrando redundancia y estableciendo configuraciones tolerantes a fallas en múltiples aplicaciones instancias.
Nginx utiliza los siguientes métodos de equilibrio de carga:
Es más, Nginx Es altamente escalable y las aplicaciones web modernas, especialmente las aplicaciones empresariales, demandan tecnología que brinde alto rendimiento y escalabilidad.
Una empresa que se beneficia de las increíbles funciones de escalabilidad de Nginx es CloudFlare, ha logrado escalar sus aplicaciones web para manejar más de 15 mil millones de visitas de página 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 en el blog de Nginx: NGINX vs. Apache: nuestra visión de una cuestión de una década.
Ambas cosas apache y Nginx no se pueden reemplazar entre sí, tienen sus puntos fuertes y débiles. Sin embargo, Nginx ofrece una tecnología potente, flexible, escalable y segura para impulsar de manera confiable y eficiente sitios web y aplicaciones web modernos. ¿Cuál es tu opinión? Háganos saber a través del formulario de comentarios a continuación.