nginx

nginx high-performance HTTP server and reverse proxy

¿Qué es nginx?

Nginx (pronunciado engine-x) es un servidor HTTP y proxy inverso libre, open-source y de altas prestaciones, así como un servidor proxy IMAP/POP3. El proyecto nginx comenzó en 2002 por Igor Sysoev, enfocado principalmente a obtener una alta concurrencia, una alta prestación y un uso reducido de memoria y en 2004 es cuando estuvo disponible la primera versión de distribución. En la actualidad nginx acapara el 15% de la cuota de mercado de servidores web.

¿Por qué nginx?

Nginx es uno de los pocos servidores diseñados para afrontar el problema C10K, lo que significa que tiene la capacidad de manejar más de 10000 conexiones simultaneas con un perfil bajo de memoria (~2.5 MB por cada 10k de conexiones inactivas HTTP keep-alive). A diferencia de los servidores tradicionales, Nginx no asigna a hilos el manejo de las peticiones. En lugar de eso, utiliza una arquitectura de tipo event-driven (asíncrona) mucho más escalable para dicha tarea. Esta arquitectura utiliza pequeñas pero previsibles cantidades de memoria.

Incluso cuando no esperemos tener que lidiar con miles de peticiones simultaneas, podemos sacar partido del alto rendimiento y del perfil bajo de memoria que nginx nos ofrece. Nginx puede ser utilizado a todos los niveles. Desde el más pequeño de los servidores virtuales VPS hasta los más grandes clusters de servidores.

Nginx da vida a varios de los sitios de mayor visibilidad actual, como Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga, Eventbrite, Zappos, Media Temple, Heroku, RightScale, Engine Yard and NetDNA.

Otras características de nginx incluyen:

  • Manipulación de archivos estáticos, archivos de índice y autoindexado.
  • Proxy inverso con almacenamiento en cache
  • Equilibrio de carga con control de estabilidad (in-band health)
  • Tolerancia a fallos
  • TLS/SSL con SNI y soporte solapado OCSP, vía OpenSSL
  • Soporte de FastCGI, SCGI, uWSGI con almacenamiento en cache
  • Servidores virtuales basados en nombre y dirección IP
  • Compatibilidad IPv6
  • Soporte del protocolo SPDY
  • WebSockets y HTTP/1.1 Upgrade (101 Switching Protocols)
  • Soporte de streaming FLV y MP4
  • Autentificación de acceso a la página
  • Compresión y descompresión de ficheros gzip
  • Reasignación URL
  • Registro personalizado con compresión gzip en vivo
  • Tasa de respuesta y concurrencia de peticiones limitada
  • Ancho de banda regulada
  • Server Side Includes
  • Geolocalización basada en dirección IP
  • Seguimiento de usuario
  • WebDAV
  • Procesado de datos XSLT
  • Uso de Scripts Perl de forma nativa

Links: