Por cierto, si necesitas comprar cualquier tipo de software para tu empresa, te recomiendo que eches un vistazo a Revolution Soft, ofrece software de primeras marcas con un descuento de hasta el 80%.
Apache y Nginx son los dos servidores web de código abierto más populares que potencian gran parte de Internet hoy en día. Ambos tienen sus propias características únicas. ¿Pero cuál es mejor para ti? ¡Vamos a averiguar!
Estoy usando la App de TuLotero para comprar lotería. Si te registras y usas mi código 419312355 te regalan 1 € y podrás echar una primitiva, una quiniela o una bonoloto completamente gratis. Puedes registrarte haciendo click aquí. ¡Suerte!
Este debate es similar en muchos aspectos a la pregunta del millón con respecto a los dispositivos móviles: ¿iOS o Android? Ambas son plataformas móviles poderosas con millones de usuarios en todo el mundo, pero operan de manera muy diferente. Si bien los iPhones son menos personalizables, posiblemente brinden una experiencia de usuario más rica con mejores ciclos de soporte de software. Pero, ¿dónde se balancea el péndulo cuando se trata de Apache y Nginx?
¿Qué es Apache?
El servidor web HTTP Apache, a menudo denominado httpd o Apache, se lanzó por primera vez en 1995 y está siendo administrado por la Apache Software Foundation desde 1999. Apache potencia un 52% de todos los sitios web del mundo y es, con mucho, el servidor web más popular en la actualidad. Aunque se ejecuta principalmente en Linux, Apache también se puede implementar en Apple Mac OS X y Microsoft Windows. Apache es a menudo elegido por los administradores por sus capacidades de personalización y soporte generalizado.
Apache es el componente de servidor web del popular conjunto de soluciones denominada LAMP (Linux, Apache, MySQL, PHP), que aún se mantiene firme a pesar del aumento de popularidad de soluciones de software como NodeJS, o los frameworks JS orientados al cliente y otros servicios en la nube. Apache tiene un amplio conjunto de características que pueden habilitarse instalando uno de los 60 módulos oficiales. También hay muchos otros módulos no oficiales que se pueden encontrar fácilmente en Internet.
¿Qué es Nginx?
El ruso Igor Sysoev comenzó a desarrollar Nginx en 2002, y su primer lanzamiento público tuvo lugar en 2004. Nginx se desarrolló como respuesta al llamado Desafío C10K (desafío que reza: “¿Cómo se diseña un servidor web que pueda manejar diez mil conexiones simultáneas? “). Nginx utiliza una arquitectura asíncrona y controlada por eventos para manejar estas enormes cantidades de conexiones. Esta arquitectura hace que el manejo de cargas altas y fluctuantes sea mucho más predecible en términos de uso de RAM, uso de CPU y latencia.
Nginx ocupa el segundo lugar en la lista de servidores web de código abierto por uso, con alrededor del 30% de todos los sitios web. Utiliza la pila LEMP (Linux, la pronunciación en inglés de Nginx: “EN-yain-ex”, MySQL y PHP).
Apache vs Nginx – Duelo de Gigantes
Vamos a comparar estos dos servidores populares al examinar su manejo del contenido estático y dinámico, el uso de la memoria, las solicitudes por segundo, la configuración y la seguridad, y también la compatibilidad y el soporte. Estos parámetros son vitales cuando se trata de elegir la solución adecuada para su organización. Vamos a empezar.
Contenido Estático y Dinámico
Los servidores Apache son totalmente capaces de manejar contenido estático utilizando sus métodos convencionales basados en archivos.
Nginx no posee la capacidad de procesar contenido dinámico de forma nativa. Para manejar PHP y otras solicitudes de contenido dinámico, Nginx debe pasar a través de un procesador externo para su ejecución y esperar a que el contenido renderizado sea devuelto. Los resultados pueden ser transmitidos al cliente en consecuencia.
La capacidad de Apache para manejar contenido dinámico internamente significa que la configuración del procesamiento dinámico tiende a ser más simple. La comunicación no necesita coordinarse con un software adicional (externo / de terceros) y los módulos pueden intercambiarse fácilmente si cambian los requisitos de contenido.
Ésta ronda queda en manos de Apache.
Uso de Memoria
Nginx aparece como un claro líder en este aspecto. Apache genera más y más procesos para manejar nuevas solicitudes entrantes, lo que hace que el uso de la memoria crezca con bastante rapidez. Esto puede convertirse en un problema importante si tiene un sitio web grande con mucho tráfico.
En comparación con Apache, Nginx tiene un uso de memoria bastante estático y se mantiene bastante estable independientemente del volumen de tráfico.
Nginx es el ganador en ésta ronda.
Cantidad de Solicitudes por Segundo
Esto es esencialmente una medida de la rapidez con la que el servidor puede recibir y atender solicitudes en diferentes niveles de concurrencia. Cuantas más solicitudes puedan manejar por segundo, más capaz será el servidor para manejar grandes cantidades de tráfico. Nginx domina claramente en el número total de solicitudes por segundo que puede atender.
Aunque se probó localmente en niveles más altos de concurrencia (no rendimiento absoluto), puede manejar menos solicitudes por segundo, pero aún más que Apache.
Nginx asegura éste apartado sin lugar a dudas.
Configuración y Seguridad
Apache incluye una opción para permitir una configuración adicional por directorio inspeccionando e interpretando las directivas en archivos ocultos dentro de los directorios de contenido. Estos archivos son conocidos como archivos .htaccess. Esto permite efectivamente la configuración descentralizada del servidor web, que a menudo se usa para implementar reescrituras de URL, restricciones de acceso, autorización y autenticación, incluso políticas de almacenamiento en caché.
Nginx no interpreta los archivos .htaccess, ni proporciona ningún mecanismo para evaluar la configuración por directorio fuera del archivo de configuración principal. Si bien esto representa una ventaja desde el punto de vista de seguridad, tenga en cuenta que existe la posibilidad de desactivar .htaccess
Apache se queda dominando éste apartado.
Compatibilidad y Soporte
La popularidad y el uso continuos de Apache le han permitido obtener niveles de soporte sin precedentes. Hay una gran biblioteca de documentación de primera y tercera parte disponible para el servidor central y para los escenarios basados en tareas que involucran la implementación de Apache. Muchas herramientas y proyectos web de hoy incluyen herramientas para arrancarse a sí mismos dentro de un entorno de Apache.
Nginx ya no se está quedando atrás, pero su participación de mercado relativamente menor en los Estados Unidos y Europa significa que menos personas tienen experiencia trabajando con él. Además, el hecho de que la solución se haya creado en Rusia (con documentación y soporte rusos) significa que pasará un tiempo antes de que se logre la adopción generalizada en los países de habla inglesa.
Apache se adueña de ésta sección.
¿Hosting en Apache o Nginx?
Cuando contratas un servicio de hosting WordPress gratuito puedes checar si el plan a contratar está funcionando sobre un servidor Apache o Nginx. Muchas empresas no lo informan explícitamente pero puedes consultarlo mediante un mensaje a un agente de soporte de la empresa. El agente podrá informarte con certeza el software que funciona sobre los servidores y la ubicación de los centros de datos. No dudes en contactarlo.
Apache y Nginx: ¿Puedes combinarlos?
Si, en efecto, Apache y Nginx también pueden colaborar.
Una configuración popular para esta asociación es colocar a Nginx frente a Apache como un proxy inverso. Esto permite que Nginx maneje todas las solicitudes de los clientes, aprovechando la velocidad de procesamiento rápida y la capacidad de manejar un gran número de conexiones al mismo tiempo. Esto también le permite escalar agregando servidores backend adicionales según sea necesario.
Nginx es muy bueno para procesar y entregar contenido estático. Esta ventaja se puede utilizar para servir archivos de forma rápida y directa al cliente. Para contenido dinámico (es decir, archivos PHP). Nginx puede simplemente enviar la solicitud a Apache, que luego puede procesar los resultados y devolver la página representada a Nginx para devolver el contenido al cliente.
En otras palabras, la velocidad de Nginx se puede aprovechar para manejar la mayoría de las solicitudes, mientras se reenvían las relevantes a Apache. Esto puede aumentar significativamente el rendimiento.
Y el ganador es.
Debe mencionarse que Apache tiene un impresionante conjunto de características de compatibilidad, lo que básicamente lo convierte en una mejor solución lista para usar. Es probablemente la opción más flexible que puedes encontrar hoy. Por otro lado, uno puede obtener serios beneficios de rendimiento / memoria al elegir Nginx.
Sin embargo, no hay un ganador claro en este duelo. Como se demostró anteriormente en este artículo, tanto Apache como Nginx son soluciones capaces con sus respectivos conjuntos de características heredadas que pueden beneficiar a varios escenarios. También existe la opción de incorporar el marco Node.js para una funcionalidad adicional.