Descubre los principales puntos a tener en cuenta a la hora de seleccionar un servidor Web entre los dos más usados en el mundo TI: Apache versus Nginx.
A la hora de seleccionar un servidor para proveer de servicios web en nuestra infraestructura o la de nuestros clientes, muchas veces, nos encontramos ante la tesitura de seleccionar cual será el servidor que mayor desempeño nos proporcione, que menor carga administrativa genere y, que por supuesto, garantice un mayor uptime (tiempo de servicio) minimizando con ello los tiempos de caída o de indisposición de servicio.
Dentro de los servidores web disponibles en el mercado actualmente hay dos que destacan por estas características y por otras que iremos repasando más adelante. Se trata de Apache y Nginx, servidores web que han desbancado completamente a otros contendientes como Microsoft ISS, Litespeed… que les siguen muy por detrás.
En el presente artículo presentamos distintas valoraciones, repasaremos fortalezas y destacaremos algunas debilidades de cada uno de ellos para poder mojarnos y argumentar sobre nuestra elección. Ojo, nuestro punto de vista no es una verdad escrita en piedra y tras leer este artículo y otras fuentes, puede no que no estés de acuerdo con nosotros y decidas tomar una elección distinta. Nosotros sólo exponemos nuestra visión y algunos factores objetivos.
Gráfica: Evolución de uso de los servidores web en el panorama actual (Fuente w3tech)
NOTA: Se pueden consultar los datos de uso de cada servidor web y su evolución desde el 1 de julio de 2019 hasta el día de hoy en la siguiente URL.
Antes de entrar a hablar de temas más técnicos, haremos foco en un punto a tener en cuenta: el navegador desde el que nos visitan nuestros “usuarios”. Esto lo podemos saber consultando la información de nuestros sistemas, que recopilan el tipo de navegador además de otros datos. Pero si no tenemos datos previos, podemos echar un ojo a las gráficas de uso de navegadores web en alguna de las webs destinadas a proveer información de este tipo.
Gráfica. Cuota de uso de navegadores web en mayo de 2022 (Fuente Wikipedia)
Comparativa y Características: Apache versus Nginx
Licenciamiento de Apache versus Nginx:
Un punto interesante a tener en cuenta cuando valoramos adquirir o instalar cualquier software es el tipo de licencia bajo el que se ha liberado (lanzado) el software en cuestión.
En este caso, Apache es un producto open-source (de código abierto) que fue liberado en 1996 bajo licencia Apache y tiene un largo recorrido con un gran apoyo de la comunidad, lo que nos debería garantizar un soporte extendido, una gran cantidad de testers y desarrolladores subsanando cualquier posible vulnerabilidad o error que se pueda detectar a lo largo del tiempo.
Por otro lado, Nginx es un proyecto que apareció en 2002, pero que hasta 2004 no fue lanzado de cara al público en general bajo licencia BSD y desde este momento, el apoyo de la comunidad ha ido creciendo. Así mismo, existe una versión comercial de Nginx ya que en 2019 fue adquirido por F5 Networks por lo que esta puede ser una buena opción para aquellos que prefieran tener un soporte profesional para escalar sus problemas.
En este caso, al menos desde nuestro punto de vista, creemos que Apache nos da mayor seguridad, ya que Apache cuenta con mayor recorrido y una comunidad que ha acompañado al proyecto por más de 25 años.
Además, aunque ambos cuentan con licenciamiento basado en proyectos de software libre, el proyecto de Apache está mucho mejor alineado con lo que la Free Software Fundation (FSF) diría que es una buena licencia, más que nada porque la licencia Apache v2.0 es compatible con la licencia GPLv3, no siendo compatible con la versión GPLv2 ya que hay ciertos términos y requisitos que no están permitidos en GPLv2.
Por otro lado, Nginx y su licencia BSD presentan cierta laxitud que puede presentar problemas de licenciamiento, entre otros en los proyectos
Logo de Apache
Rendimiento de Apache frente a Nginx:
Un punto de gran interés para todo administrador de sistemas y de servicios web es conocer el rendimiento que va a tener nuestro servidor y por eso vamos a valorar los dos puntos que lo conforman: la velocidad del servicio y el consumo de recursos.
En lo que respecta a la velocidad del servicio, Apache adolece de una mayor ralentización del servicio en la medida que crecen los usuarios, aunque esto no se empieza a notar hasta que empieza a haber miles de conexiones concurrentes, por el contrario, ambos servidores presentan una muy buena y muy semejante velocidad de servicio con volúmenes bajos de usuarios.
En el caso del uso de recursos, vuelve a pasar lo mismo. Cuando tenemos pocos usuarios, el consumo de ambas opciones es más o menos igual, pero conforme escala el número de conexiones se disparan también los recursos que necesita Apache. Con Nginx no sucede lo mismo, ya que escala de manera lineal y no exponencial como ocurre con Apache.
Por estos dos motivos, en esta sección, Nginx se llevaría el gato al agua.
Logo de Nginx
Sencillez de configuración y administración: ¿Apache o Nginx?
Al comparar la sencillez de configuración inicial y administración, siempre diré que es una pregunta complicada de contestar, ya que algunos de nosotros ya tenemos una longeva relación con Apache, que en mi caso se remonta hasta el año 2000, con lo que tras 22 años de relación intermitente con este servidor web me va a ser muy difícil poder decir que es más complicado Apache que Nginx, ya que tras años y años trasteando con este servidor tengo grabados a fuego sus comandos, rutas, y configuraciones básicas.
Aun así, puedo decir, sin miedo a equivocarme, que para un técnico que tenga el primer contacto con ambos servidores, va a ser mucho más fácil adaptarse a Apache que a Nginx. Esto se debe, entre otras cosas a la estructura tan clara de ficheros de configuración.
Solo pondré un pero a Apache, y es que, tras trabajar con múltiples host en Nginx, éste es mucho más sencillo de administrar y su estructura de elementos separados facilita tremendamente la gestión, pero esto se da para casos en los que levantamos varios hostings en un mismo servidor, para todo lo demás, recomendaría ir a Apache.
Flexibilidad:
Antes de empezar a valorar, diremos que llamamos flexibilidad a la capacidad de adaptar estos servidores a nuestras necesidades de manera que estén lo más alineadas posible con lo que buscamos. Para ello, en esta sección hablaremos de su capacidad para ser instalado en distintas plataformas, la capacidad de integrarse con otras herramientas y la capacidad de tunning para adaptarla a distintos roles.
Ambos servidores pueden desplegarse en distintos sistemas operativos como GNU/Linux, MS/Windows, Docker, etc. Pero la interacción con algunas herramientas con las que Apache se integra todavía no están disponibles para Nginx y es aquí donde los años adicionales de existencia pueden dar la ventaja a Apache.
En esta área, hay que destacar la enorme cantidad de módulos disponibles para Apache, que podemos listar aquí y que le dan una ventaja notable a Apache frente a Nginx en lo que a flexibilidad se refiere.
Seguridad de Apache frente a Nginx:
La seguridad es un tema muy serio hoy en día, ya que cada vez hay más servicios online, y cada vez hay más atacantes dispuestos a aprovechar cualquier vulnerabilidad. Por esta razón, es un punto que, a pesar de ser el último, para nosotros es el que más importancia toma.
El diseño de ambos servidores está muy orientado a la seguridad y la evolución a lo largo de los años es clara y continua, llegando hasta el presente con estructuras robustas, estables y seguras que nos garantizan (dentro de lo que es posible) una continuidad de las operaciones sin grandes sobresaltos, aunque por desgracia, nunca se podrá garantizar que instalando uno u otro se vaya a gozar de la invulnerabilidad de los sistemas. Además, siempre habrá que tener un ojo puesto en las distintas actualizaciones y parches que se publiquen para gozar de esa capa adicional que puedan darnos dichas actualizaciones.
Tanto Nginx como Apache publican periódicamente reportes de incidencias de seguridad, vulnerabilidades, etc. Y por supuesto, publican actualizaciones y parches con igual periodicidad, aunque quizá sea ligeramente superior Apache, más que nada por su numerosa comunidad.
En este sentido, tanto Apache como Nginx han hecho los deberes y por esta razón creemos que están más o menos a la par. No hay un claro vencedor en esta sección.
Conclusión… Apache o Nginx, ¿Con cuál me quedo?
Si hacemos un breve repaso de lo expuesto a lo largo de este pequeño artículo, podemos ver que en lo que respecta a licencias, Apache está mucho mejor visto por su licencia alineada con la GPLv3, mientras que la BSD tiene ciertos problemas por la laxitud de sus términos. En lo que respecta al rendimiento, Nginx muestra mejor desempeñopara grandes volúmenes de conexiones, mientras que en lo que respecta a la sencillez de configuración y administración y la flexibilidad sería mejor Apache. Por último, en lo que respecta a seguridad, ambos quedarían a la par.
En resumen, recomendaríamos usar Apache a menos que esperemos grandes volúmenes de visitas y no dispongamos de un gran volumen de recursos ya que el aprovechamiento que nos daría Nginx sería mucho mejor.
Por último, debemos decir que, a pesar de poder decantarnos por un tipo de servidor web, siempre debe prevalecer el criterio del lector, que puede tener mayor afinidad por uno u otro por muy diversas razones, como por ejemplo por conocer mejor el sistema o por tener una mejor afinidad con el proyecto.