nginx: el servidor web rápido y sostenible

De acuerdo a estadísticas de W3Tech, Apache sigue siendo actualmente el servidor web más utilizado, pues más del 50 por ciento de operadores web alrededor del mundo lo utilizan. Sin embargo, si se tiene en cuenta a las 10.000 páginas web más visitadas, en vez de a la totalidad de ellas, el panorama es diferente: solo alrededor del 30 por ciento de estas webs están basadas en el veterano servidor publicado en 1995. Dentro del top 1.000 solo un 27 por ciento lo utiliza.

Esto se debe, en primer lugar, a la cantidad desproporcionada de páginas web ubicadas entre las 1.000 webs más visitadas que utilizan Google como servidor web (todas las webs de Google funcionan a través de estos servidores). Por otro lado, este resultado también se debe al rápido aumento de la popularidad de nginx, el software ruso para servidores web. Mientras en 2010, con tan solo un 4 por ciento del mercado, el software publicado bajo licencia BSD no era más que una alternativa a Apache, hoy en día es utilizado por uno de cada dos proyectos online.

¿Qué es nginx?

La programación de nginx estuvo a cargo del desarrollador ruso Igor Sysoev, quien publicaría su primera versión en 2004. Desde entonces, la atención se ha concentrado en el desarrollo de un servidor que se caracterice por un rendimiento muy alto, que sirva al mayor número de clientes posible al mismo tiempo y que, además, consuma la menor cantidad de recursos. Dada la creciente popularidad y proliferación del servidor web, Sysoev crearía, en 2011, nginx Inc. Desde entonces, la empresa comercial es responsable del desarrollo del software y ofrece, además de la versión gratuita estándar, nginx Plus, una versión de pago con servicio de asistencia técnica y funciones adicionales como un servicio de balanceo de carga mejorado.

Como Apache, nginx es un software modular. Esto significa que las diferentes características son presentadas en forma de módulos y, como administrador, pueden ser activadas o desactivadas. Como consecuencia, el usuario goza de las siguientes características:

  • Application Acceleration (acelerador de aplicaciones) agiliza la entrega de contenidos.
  • Servidor proxy inverso para la aceleración web (HTTP, TCP, UPD) o como proxy de correo electrónico (IMAP, POP3, SMTP).
  • Cifrado TLS para una transferencia de datos segura.
  • Gestión de ancho de banda para un mejor rendimiento.
  • Balanceo de carga con reorientación de solicitudes para disminuir la carga del servidor.
  • Streaming de vídeo para reproducir archivos en formato MP4 y FLV.

Mientras que Apache abre un nuevo proceso o hilo para cada solicitud del cliente, nginx trabaja enfocado a eventos. Como consecuencia, puede procesar solicitudes de forma asíncrona, ahorrando memoria y espacio. Este software de servidor es soportado por una gran variedad de sistemas operativos, incluyendo variantes de UNIX / Linux, Mac OS o Windows.

Instalar y configurar nginx

Los usuarios de la edición Plus (de pago) reciben asistencia técnica por parte del equipo de nginx durante el proceso de instalación. Por lo general, la instalación se hace utilizando un gestor de paquetes, pues la mayoría de distribuciones Linux tienen el paquete nginx instalado por defecto en su repositorio. Sin embargo, si el paquete no está incluido, el código fuente se puede descargar rápido y fácilmente desde la página web oficial del proyecto. A continuación, te mostramos cómo instalar y configurar nginx en un servidor Linux:    

1. Con el siguiente comando es posible actualizar el gestor de paquetes para que la instalación (que se inicia con el comando en la segunda línea de código) se base en la última versión del paquete de nginx.   

sudo apt-get update
sudo apt-get install nginx

2. Por lo general, nginx se inicia justo después. Para comprobar si el software funciona correctamente, accede a la página de destino de nginx utilizando el nombre de dominio del servidor o la dirección IP pública en tu navegador. Si el programa se ha instalado satisfactoriamente, verás el siguiente mensaje:

3. Todo lo que se necesita para configurar nginx lo encuentras en el directorio /etc/nginx, incluyendo el archivo de configuración principal nginx.conf. Para que se efectúen los cambios realizados en este archivo, es necesario reiniciar el servidor con alguno de los siguientes comandos:

sudo service nginx reload
sudo service nginx restart

Con los parámetros stop y start puedes iniciar o parar completamente el servicio.

4. La sintaxis del archivo de configuración tiene las siguientes características:

  • Ajustes: todos los ajustes se inician con los respectivos nombres de las variables. Los argumentos se conectan o separan por medio de espacios y siempre van acompañados de un punto y coma al final.
worker_connections 768;
  • Ajustes genéricos: algunos ajustes, como la variable events, incluyen argumentos que, a su vez, representan ajustes con sus propios argumentos. Estas subdirectivas se enmarcan con llaves ({}).
events {
  worker_connections 768;
  multi_accept on;
}

  • Amohadilla (#): las directivas (instrucciones) que están deshabilitadas son precedidas por una almohadilla. Cuando se elimina la marca, se activa la configuración correspondiente del servidor. Por ejemplo, en el caso de
# multi_accept on;

la opción para aceptar varios clientes al mismo tiempo está desactivada.

  • Saltos de línea y espacios múltiples: nginx interpreta los saltos de línea y múltiples espacios como un único espacio. Al configurar nginx, es posible aprovechar esta ventaja y velar por una estructura clara y legible del archivo de configuración. 

5. Para acceder a más información acerca de los módulos individuales, así como a otros tutoriales para la configuración de servidores proxy basados en un servidor nginx, puedes visitar la documentación oficial en su página web.

¿Qué hace de nginx un software tan popular?

El hecho de que la popularidad de nginx esté en ascenso tiene varias razones. En primer lugar, cabe mencionar que este software para servidores web se adapta de forma óptima a las necesidades actuales de muchos proyectos web. nginx no solo logra excelentes resultados en el procesamiento de un gran número de solicitudes de los clientes, sino que también aprovecha eficazmente los recursos. En consecuencia, este software es la solución perfecta a la potencia limitada de conexiones móviles, permitiendo que los propietarios de páginas web puedan ofrecer su contenido a usuarios de dispositivos móviles lo más rápido posible. Otra de las características que favorecen a este proyecto ruso de código abierto son sus posibilidades de aplicación, donde además de la variante clásica de servidor web HTTP, nginx también ofrece buenos resultados como servidor proxy de correo electrónico o como balanceador de carga.

Sin embargo, nginx no siempre es la mejor opción como servidor web: la realización de proyectos de hosting compartido, en el que los recursos del servidor se controlan mediante áreas protegidas por contraseñas o redirecciones internas, resulta algo complicada. Dichas secciones y rewrites solo pueden aplicarse en el archivo de configuración central y solo se implementan reiniciando el servidor. Como consecuencia, se pueden presentar posibles fallos que afectarán, por igual, a todos los proyectos que comparten el hosting. En este área, el servidor web Apache ofrece una gran ventaja, en la medida en que los ajustes individuales se registran en archivos .htaccess separados.