Guia de Nginx: Introducción
() translation by (you can also view the original English article)
Velocidad y correr en paralelo a sido siempre un reto para cualquier website con alta demanda. Para incrementar la velocidad de carga, muchos navegadores abren conexiones en paralelo. Un buen servidor web, en combinación con conexiones que se puedan guardar, necesita ser bien robusto y tener la habilidad de poder escalar en una manera no lineal con el incremento de los numeros de solicitudes.
Es muy importante que el sitio web este basado en un numero de bloques que sean independientes pero que trabajen unidamente formando un sistema integrado, y Nginx es una pieza muy importante que nos va ayudar a alcanzar ese objetivo.
NginX (que se pronuncia, “engine x”) es un server ligero, gratuito, libre, HTTP, y proxy inverso, asi como tambien un server de mail proxy.
NginX puede reemplazar completamente otros servers HTTP, o Apache, o también puede estar en frente de cualquier infraestructura que tengas, para que trabaje como proxy inverso.
Reverse Proxy Server (Servidor invertido proxy)
Usar un proxy invertido es muy importante porque ayuda en lo siguiente:
- Oculta la existencia y características del servidor original
- Distribuye la carga
- Reduce y almacena el contenido
- Hace pruebas de A/B
- Manipula solicitudes/respuestas



Servidor HTTP vs Apache
Como difiere Nginx de Apache? Nginx es basado en eventos y no es sincronizado, mientras Apache depende enteramente en threads. En servidores con trafico moderado, threads por seguro van a gastar memoria. En el caso de Nginx, como esta basado en eventos y no es sincronizado, es por seguro que Nginx es el ganador.
Arquitectura e interior
Nginx tiene un simple procesador maestro y muchos procesadores calificados como ‘trabajadores’ que corren en un usuario no privilegiado. En un trabajador, Nginx puede manejar miles de conexiones.



El código del trabajador de Nginx incluye el código principal y los bloques funcionales. La arquitectura bloque de Nginx te permite extender las caracteristicas del servidor web sin modificar el código principal. Los bloques leen y escriben en la red y almacenamiento , transformar tu contenido, pasar las solicitudes a los servidores originales, incluye acciones en la sección del servidor, entre otras cosas. Bloques principalmente constituyen la parte de la aplicacion y la habilidad de presentar.
Nginx bloques Bloques en Nginx vienen en diferentes formas: bloques principales, bloques de evento, encargados de fases, protocolos, encargados de variable, filtros, subida y balanceado de carga.
Nginx procesa conexiones en cadena acumulados uno al lado del otro. Por cada operación hay un bloque que esta haciendo el trabajo relevante. Por ejemplo, reduciiendo contenido, modificando contenido, ejecutando contenido incluido en el lado del server, y comunicándose con el servidor. El ciclo de proceso de una solicitud HTTP se ve de la siguiente manera:
- El cliente envía una solicitud HTTP.
- El bloque principal de Nginx elige el encargado de fase basado en la configuracion que aga juego con la solicitud.
- Si esta configurado, el balanceador de contenido elige un servidor proxy.
- El encargado de fase hace su trabajo y pasa cada resultado al primer filtro.
- El primer filtro pasa el contenido al segundo filtro.
- El segundo filtro pasa ela contenido al tercer filtro y así sucesivamente.
- La respuesta final es enviada al cliente.
Esta organización en capas e independiente pero a la vez bien integrado como sistema hace que aga bien su trabajo.
Configuracion de Nginx
La configuración de Nginx esta en archivos texto, usualmente en /usr/local/etc/nginx
o /etc/nginx
. El archivo principal de configuración es llamado nginx.conf. El archivo de configuración de Nginx es principalmente una lista de directorios organizado en una estructura lógica. El comportamiento entero de la aplicacion se define por los valores que tu le das a los directorios. Por ejemplo,
nginx.conf
1 |
#user nobody; |
2 |
worker_processes 1; |
3 |
#error_log logs/error.log; |
4 |
#error_log logs/error.log notice; |
5 |
#error_log logs/error.log info; |
6 |
#pid logs/nginx.pid; |
7 |
|
8 |
events { |
9 |
worker_connections 1024; |
10 |
} |
11 |
|
12 |
http { |
13 |
... |
Arriba, puedes ver un extracto del archivo de configuración de Nginx. El archivo completo puede ser encontrado en /usr/local/etc/nginx/nginx.conf.default
. El gist intenta explicarr en detalle cada directorio.
Este artículo introduce lo que es Nginx y la importancia que juega en el proceso de crear sitios web. También toca los directorios en el archivo de configuración. La segunda parte de este artículo va ir en mas detalles y dar algunos ejemplos para usar Nginx en diferentes contextos, y también hablar de algunos bloques que son muy recomendados para usar.
¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!