Nginx, Una gran mejora frente Apache

evelb_hector
Desarrollador Web
“.”
Post más relevante: Nginx, Una gran mejora frente Apache
, , ,

Hoy hablaremos sobre el servidor Nginx, uno de los servidores web que mas aumenta en cantidad de usuarios y que ya se ha convertido en el principal rival del tradicional servidor Apache.

Pero Nginx no es solo un servidor web, también incluye servicios de correo electrónico con acceso a IMAP y POP. Además, Nginx también puede ser usado como proxy inverso o balanceador de carga, utilizándose este modo para repartir la carga entre distintos servidores.

Centrándonos en su aspecto de servidor web, ¿Por que deberíamos usar Nginx y no Apache?

Por un motivo muy simple, rendimiento.

Apache

Apache tiene la ventaja de su gran comunidad que lo mejora constantemente entre otras muchas pero tiene un gran problema, el rendimiento. Apache crea un proceso o hilo por cada conexión y al aumentar las conexiones aumentan los procesos abiertos, esto puede limitarse y la cantidad de procesos abiertos dependerá de la memoria que se le asigne y una vez llegado a ese limite, apache dejara de crear procesos, por lo que las nuevas conexiones no tendrán acceso a la web.

Nginx

Por otro lado, Nginx está orientado a eventos, por lo que cada conexión creará un evento que durará el tiempo que se tarde en servir el contenido. Estos eventos no crean un proceso si no que se agrupan, y cada grupo de eventos son gestionados por un único proceso por lo que el contenido se sirve mas rápido y se hace muy difícil que se llegue a cortar las nuevas conexiones y no se sirva la web. Pero no todo es positivo, el principal inconveniente de Nginx es que solo puede servir contenido estático teniendo que hacer uso de un modulo externo para el contenido dinámico, por lo que se reduce mucho el rendimiento que ofrece. Aun así, este rendimiento sigue siendo mucho mayor que el de Apache aunque una opción muy valida seria la tomada por muchas corporaciones, el uso de Apache para el contenido dinámico y de Nginx para el contenido estático.

Instalación

Una vez convencidos de la mejora que supone el uso de nginx, pondre un ejemplo de su instalacion en un servidor Ubuntu Server 16.04, que demostrara lo sencillo que es este proceso.

Primero y como siempre en un servidor Ubuntu, instalamos el servidor con apt-get usando los comandos:

sudo apt-get update
sudo apt-get install nginx

 

Una vez instalado veremos que automáticamente se ejecuta y por defecto servirá el contenido que tengamos el el directorio /var/www/html pudiendo cambiar al servidor que queramos modificando los archivos de configuración que se sitúan en el mismo lugar y de la misma forma que Apache, en el directorio /etc/nginx.

 

Directorio nginx
Directorio configuración nginx

Al igual que en Apache, deberemos configurar el sitio que queremos modificando o copiando el archivo default situado en la carpeta sites-enabled, recordando siempre reiniciar el servicio por ejemplo con el comando:

sudo service nginx restart
¿Pero que pasa si queremos utilizar también nginx para mostrar contenido dinámico como PHP?

Pues muy sencillo, emplearemos el conector php-fpm que se encargara de entregar este contenido, para ello debemos instalarlo mediante el comando:

sudo apt-get install php-fpm

 

Una vez instalado tenemos que indicarle a Nginx que lo utilice, para eso debemos modificar el archivo de configuración situado en sites-enabled descomentando las lineas referidas a php-fpm pudiendo ademas, decidir que la conexión se haga mediante un socket o un puerto, quedando el archivo como se muestra a continuación.

Archivo de configuración
Archivo de configuración

 

Con esto, finalizamos la instalación del servidor Nginx, como se puede ver, supone el mismo esfuerzo que la instalación de un servidor Apache, por lo que se convierte en la mejor opción si buscamos mejorar el rendimiento de nuestros servidores web.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*