Para mejorar el rendimiento de todos nuestros servidores hemos instalado nginx, un servidor web complementario de alto rendimiento que suele usarse como servidor proxy inverso. Este servidor web ha sido diseñado específicamente para entregar grandes cantidades de contenido estático (como imágenes, vídeos, CSS, XML, etc). Al contrario que Apache, nginx es mucho más eficiente cuando existe un gran número de conexiones concurrentes. Otra de las ventajas de este servidor web en comparación con Apache es que nginx usa mucho menos memoria por conexión cliente.
Para aprovechar todos los beneficios de nginx, lo configuramos como un proxy inverso que se sitúa entre Internet y Apache. Esto significa que nginx se convierte en un servidor web frontend que procesa todas las peticiones entrantes de los visitantes del sitio. Las peticiones se envían a Apache y este, a su vez, distingue las peticiones de contenido estático de las peticiones de contenido dinámico. Si se solicita un archivo estático (como por ejemplo JPG, CSS, HTML, etc.), Apache pasa la petición a través de todos los controladores (aplica la configuración a nivel del directorio .htaccess, vuelve a escribe una URL,ect.) y devuelve una respuesta a nginx que sólo contiene la ubicación del archivo solicitado en el sistema de archivos. nginx localiza el archivo y lo envía al cliente. Si se solicita un archivo dinámico (como un script PHP), Apache ejecuta el archivo y envía la respuesta a nginx, quien la entrega al cliente.
Esta combinación de nginx y Apache proporciona las siguientes ventajas:
- Aumento del número máximo de conexiones concurrentes a un sitio web.
- Reducción del consumo de recursos de memoria y CPU del servidor.
- El efecto máximo se conseguirá para sitios web con una gran cantidad de contenido estático (como pueden ser galerías de fotos, sitios de streaming de vídeo, etc).
- Mejora de la eficacia de servicio a los visitantes con velocidades de conexión lentas (GPRS, EDGE, 3G, etc.).
Por ejemplo, un cliente con una conexión de 10 KB/s solicita algún script PHP, que genera una respuesta de 100 KB. Si no se dispone de nginx en el servidor, la respuesta la entrega Apache. Durante estos 10 segundos requeridos para entregar la respuesta, Apache y PHP siguen consumiendo todos los recursos del sistema para esta conexión abierta. Si se tiene instalado nginx, Apache reenvía la respuesta a nginx (la conexión nginx-a-Apache es muy rápida porque ambos se encuentran en el mismo servidor) y libera los recursos del sistema. Como nginx consume menos memoria, la carga general en el sistema se reduce de forma significativa. SI tiene un número elevado de este tipo de conexiones lentas, el uso de nginx mejorará de forma substancial el rendimiento del sitio web.