Nginx VS Apache: ¿Cuál es mejor servidor web?

Creo que el título del post lo dice todo: vamos a explicar las diferencias entre estas dos aplicaciones para ver cuál es mejor servidor web.

En este blog ya hemos hablado de LiteSpeed Web Server, un servidor HTTP muy potente que utilizamos en nuestros servidores. Sin embargo, en algunos servicios como los servidores VPS optimizados con VestaCP o RaiolaCP utilizamos Nginx como proxy inverso para Apache.

Apache y Nginx son totalmente diferentes. Nginx es un web server actual pensado para soportar grandes volúmenes de tráfico. Aunque Apache ha mejorado mucho en los últimos años con la aparición de la versión 2.4, sigue estando en desventaja frente a Nginx y LiteSpeed.

apache http server nginx

Apache, Nginx y LiteSpeed son tres servidores web. Te preguntarás si hay más alternativas y tengo que decirte que sí, pero sus cuotas de mercado y compatibilidades son tan bajas que ni merece la pena mencionarlas.

Después de estos tres servidores web, por detrás encontramos a IIS (Internet Information Services) de Microsoft, que ha perdido mucha cuota de mercado en los últimos años y actualmente solo se utiliza en entornos donde se ejecuta ASP.NET.

En el momento de escribir y publicar este artículo, las cuotas de mercado según W3Techs se reparten de la siguiente forma:

servidor linux apache

Como puedes ver en la imagen anterior, hay un servidor HTTP llamado «CloudFlare Server». Esa cuota de mercado debemos sumársela a Nginx, porque se trata de una versión modificada de Nginx para el CDN de CloudFlare. Con esto, la cuota de mercado de Nginx queda muy por encima de Apache.

Como puedes ver, la tercera opción que pelea por cuota de mercado es LiteSpeed. También podríamos comparar Nginx VS LiteSpeed, pero, como LiteSpeed es de pago, juega en una liga diferente. Aun así, su cuota de mercado sube mucho más que la de Nginx actualmente.

También debemos tener en cuenta que en estas estadísticas contamos a cualquier servidor Nginx, independientemente del modo en que esté funcionando.

No me enrollo más. Vamos al grano con el tema del artículo.

Suscríbete a nuestra newsletter
¡Suscríbete a nuestra newsletter!

No te enviaremos spam, ¡te lo prometemos!. A nuestros suscriptores les enviamos nuestros contenidos sobre WordPress, hosting, marketing digital y programación.

 

¿Cuál es la diferencia entre Apache y Nginx?

Podría decirte directamente que son completamente diferentes y me quedaría tan tranquilo, pero te lo voy a explicar de forma ordenada.

Hay que entender que Apache fue el primer servidor HTTP y, durante muchos años, no hubo alternativa. Por lo tanto, es un proyecto mucho más maduro y que ha conseguido estandarizar ciertas cosas a las que actualmente están acostumbrados casi todos los webmasters, como el uso del .htaccess.

página web wordpress

No vamos a decir directamente que el código de Apache se ha quedado obsoleto, ya que con las últimas actualizaciones ha mejorado muchísimo. No obstante, a nivel de arquitectura de software Apache necesitaría ser completamente reescrito para poder competir con servidores web como Nginx o LiteSpeed.

Para que veas la diferencia: Apache se define a sí mismo como un servidor HTTP open source, mientras que Nginx se define como un servidor HTTP de alto rendimiento open source.

Vamos a ver un listado de diferencias en el funcionamiento de ambos:

  • Apache necesita abrir múltiples hilos para atender múltiples peticiones de clientes, mientras que Nginx con un hilo puede atender múltiples peticiones de clientes. Como resultado, consume menos recursos y es capaz de responder más rápidamente.
  • Mientras que en alta carga Apache no es capaz de atender múltiples peticiones de forma concurrente y asíncrona, Nginx es todo lo contrario. Está diseñado para atender muchas peticiones de forma asíncrona y siendo lo más eficiente posible al consumir recursos de RAM y CPU.
  • Mientras que Apache permite ejecutar PHP dentro del propio servidor web, en Nginx debemos externalizarlo, lo que es mucho más eficiente. Actualmente, usar mod_php en lugar de PHP-FPM es una locura.
  • Nginx es muy eficiente al servir contenido estático (imágenes, PDF, CSS, Javascript, etc.), mientras que Apache es más lento y consume más recursos.
  • Nginx puede funcionar como servidor HTTP y como proxy inverso, mientras que Apache solo puede funcionar como servidor web.

Como has podido ver en el listado anterior, TODOS los puntos expuestos están relacionados con el rendimiento y con la forma de procesar la carga de trabajo (peticiones entrantes).

sitio web hosting

Existen algunas diferencias más que no tienen nada que ver con el rendimiento:

  • Apache está disponible para cualquier sistema operativo; sin embargo, Nginx funciona bien en todos menos en Windows, donde tiene la compatibilidad algo limitada. Aunque debo aclarar que normalmente estos servicios se instalan en servidores Linux.
  • En Apache podemos cargar y descargar módulos fácilmente, mientras que en Nginx el software debe ser compilado con los módulos que le queramos meter.
  • Apache está desarrollado por la comunidad directamente, mientras que Nginx es desarrollado por una empresa privada que vende una versión Enterprise de Nginx y varios módulos añadidos.

Y, por último, la diferencia más importante para el usuario final.

Apache es compatible con los archivos .htaccess para modificar el comportamiento de las webs, mientras que Nginx tiene sus propios archivos de configuración. Precisamente aquí es donde entra en juego LiteSpeed, que es eficiente como Nginx, pero conserva la compatibilidad con los archivos .htaccess.

Por esta razón, actualmente es muy difícil encontrar un hosting compartido con Nginx, ya que los webmasters con un nivel principiante/medio están demasiado acostumbrados al uso del .htaccess. Hay muchos proveedores, como nosotros, que pagan por usar LiteSpeed para que las webs de sus clientes carguen rápido y además sus hosting sean compatibles con el archivo .htaccess.

 

Apache vs Nginx: ¿Cuál es más rápido?

Aunque la mayoría de la gente habla de velocidad, a mí me gusta más hablar de eficiencia.

Una vez vistas las diferencias de funcionamiento entre ambas aplicaciones, ya se puede intuir cuál de los dos es más eficiente y gestiona mejor las peticiones entrantes.

Además, Internet está lleno de gráficas con benchmarks de rendimiento donde se compara la eficiencia de Nginx y Apache (y, normalmente, también de LiteSpeed).

linux trafico

En el punto anterior explicamos la diferencia entre las dos aplicaciones y la razón por la cual Nginx es capaz de servir muchas más peticiones en menos tiempo y consumiendo menos recursos que Apache. En resumen, Nginx es mucho más eficiente.

No hay mucho más que puntualizar en este tema. Si tenemos que recomendar un servidor web por su velocidad, entre estos dos elegimos Nginx sin duda.

 

Apache VS Nginx: ¿Cuál es más seguro?

Realmente, en ambos casos podemos usar mod_security con reglas personalizadas para proteger nuestros sitios web. Poco más podemos comentar.

Lo que sí quiero aclarar es que no es lo mismo recibir un ataque por fuerza bruta (muchas peticiones juntas) en un Apache que en un Nginx. El segundo va a ser capaz de responder mucho mejor a la avalancha de peticiones entrantes sin «comerse», literalmente, todos los recursos de RAM, CPU e I/O de la máquina.

Por lo tanto, ¿cuál de los dos es más seguro? Pues no existe un claro ganador, ya que ambos reciben actualizaciones constantes y ambos implementan directrices de seguridad básicas, pero, como has visto, hablando de seguridad vuelven a salir las diferencias a nivel de eficiencia.

 

Nginx como proxy inverso para Apache

Quiero acabar el post mencionando esta configuración, ya que es la que usamos en nuestros VPS optimizados con VestaCP o RaiolaCP.

Como he comentado antes, Nginx puede trabajar como proxy inverso. Eso quiere decir que puede ponerse por delante de un Apache y realizar ciertas tareas que mejoran la eficiencia:

  • Servir ficheros estáticos de forma más rápida y ágil.
  • Cachear los contenidos (incluso con un caché de página para el HTML) y servirlos de forma eficiente y rápida a los usuarios.
  • Filtrar y aplicar redirecciones directamente en el proxy inverso, que serán más eficientes que si tienen que ejecutarse en Apache.

Hablando mal y rápido, configurando Nginx como proxy inverso obtenemos ventajas a nivel de rendimiento y eficiencia, pero manteniendo la compatibilidad con el .htaccess. No obstante, debemos tener en cuenta que la ejecución de PHP la realizará Apache, por lo que será mucho más lenta y menos eficiente que si la hiciera Nginx (esto podemos mitigarlo un poco con el caché de página aplicada por el proxy inverso Nginx).

Implementar un Nginx como proxy inverso en un sistema Linux no es un problema. Sin embargo, en entornos Windows no hay ningún stack pensado para hacer esto sin realizar toda la configuración manualmente.

 

¿Qué servidor web tengo que elegir para mi web?

Quizás esta es la pregunta más fácil de responder, puesto que el orden está más que claro:

  1. LiteSpeed Web Server
  2. Nginx
  3. Nginx como proxy inverso para Apache
  4. Apache

Entonces, si LiteSpeed es el mejor, ¿por qué no lo usamos siempre?

Como he dicho antes, LiteSpeed es de pago y la mayoría de los webmasters y administradores de sistemas no quieren pagar por usarlo. Existe una versión gratuita llamada OpenLiteSpeed, pero no es compatible con el .htaccess, que precisamente es una de las «ventajas estrella» de LiteSpeed frente a Nginx.

Si tuviera que comparar el rendimiento de Nginx y LiteSpeed te podría decir que son muy similares, pero LiteSpeed es compatible con .htaccess y Nginx utiliza sus propios ficheros de configuración, por lo que requiere conocimientos técnicos más avanzados.

En Raiola Networks ofrecemos LiteSpeed en todos nuestros servidores con cPanel (desde hosting compartido hasta hosting elástico o hosting reseller). En los servidores VPS y servidores dedicados con VestaCP o RaiolaCP usamos Nginx como proxy inverso para Apache, con el fin de ofrecer compatibilidad con los .htaccess sin que el usuario tenga que pagar la licencia de LiteSpeed.

Antes de terminar, quiero agregar una cosa:

Aunque Apache ha mejorado mucho en los últimos años y mucha gente dice que ya vuelve a ser una opción más, Nginx siempre será el servidor HTTP orientado a altos volúmenes de tráfico. Por eso, CloudFlare lo ha elegido para la implementación de su CDN.

Mi nombre es Alvaro Fontela, soy consultor Wordpress y blogger activo desde hace años. Co-Fundador de Raiola Networks, escribiendo sobre Wordpress en este blog día tras día.

Articulos relacionados

Si te ha gustado este post, aquí tienes otros que pueden interesarte. ¡No pares de aprender!

Compartir en Twitter
Compartir en Facebook
Compartir en Pinterest

Tenemos 2 comentarios en

"Nginx VS Apache: ¿Cuál es mejor servidor web?"

  1. Avatar Cuece Pastas - Expomaquinaria dice:

    Excelente post, sin duda uno de los mejores que he leido, saludos.

    1. Avatar Alvaro Fontela dice:

      Gracias por el comentario 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada.