7/21/2019 Apache y Nginx
1/8
NGINX
Desde hace mucho tiempo cuando nos hemos encontrado en la necesidad de
un servidor HTTP, la primera solucin que nos venia a la cabeza era Apache;
sin embargo los tiempos han cambiado, las exigencias de los desarrolladores y
clientes han incrementado y el uso de este antiguo gigante ha venido
disminuyendo cada vez mas, esta semana hablaremos de su mayor
contendiente, ginx!
Qu es Nginx?
"ealmente pronunciando #engine$x% &no #enyinx%', es un servidor HTTP, proxy
en reversa, balanceador de carga y proxy de correo electrnico, basado en el
concepto del cdigo abierto! (n)ocado en una arquitectura de mane*o de
eventos as+ncronos en lugar de hilos o threads es reconocido por su alto
desempeo, ba*o consumo de recursos, estabilidad, escalabilidad ycon-guracin sencilla!
.e estima que m/s del 012 de los sitios en internet est/n servidos o proxiados
por ginx, entre ellos podemos mencionar algunos de gran relevancia que
seguro conocer/s como 3itHub, 4ordPress!com, et5ix, Hero6u, .ound7loud y
muchos m/s!
Nginx vs. Apache
8encionemos algunas caracter+sticas que ilustrar/n las venta*as que o)rece
ginx en contraste con el servidor 9eb m/s conocido en el mercado!
8ane*o de concurrencia de entre 1 y : veces mayor!
.ervicio de recursos est/ticos de hasta
7/21/2019 Apache y Nginx
2/8
*uegos en l+nea 8ochi 8edia, la cual que manten+a sus servidores ba*o ginx y
reeC.D!
Al no tener que crear nuevos procesos en la creacin de hilos, el consumo de
memoria es signi-cativamente ba*o, tan ba*o como a merced del alto tra-co de
varios cientos de peticiones por segundo en un slo servidor, el consumo es de
unos 08C de "A8 y 0
7/21/2019 Apache y Nginx
3/8
Para 4DB4. no se debe esperar altos niveles rendimiento ni altos niveles de
concurrencia debido a que existen varios problemas y con5ictos conocidos, el
)uncionamiento de ginx en 4indo9s se considera en estado beta!
Iuego descomprimiremos el archivo que descargamos en el disco 7 y usando la
consola navegaremos al nuevo directorio para iniciar el proceso>
0 c>J cd nginx$0!1!= &enter'
7/21/2019 Apache y Nginx
4/8
= c>Jnginx$0!1!=Kstart nginx &enter'
Prueba
Iuego de haber instalado e iniciado ginx, probemos que e)ectivamente sirve
dirigiLndonos a la direccin 9eb donde )ue instalado &si estamos instalando
localmente ser/ localhost' y especi-cando el puerto por de)ecto de instalacin
&en B. M, Homebre9 durante la instalacin debi indicarlo, suele ser :dem/s suelen establecerlo directamente en el :
7/21/2019 Apache y Nginx
5/8
Puede que haya con5ictos con el puerto si tienes instalado otro servidor 9eb
como Apache que se encuentre en )uncionamiento y escuchando el mismopuerto, esto lo solucionaremos m/s adelante en la con-guracin!
7on-guracin
Cien, ahora que sabemos que nuestro servidor )unciona conozcamos algunos
aspectos de la con-guracin de ginx, para esto debemos abrir el archivo que
la contiene!
directorioNdondeNdescomprimimosNnginxJcon)Jnginx
Podremos notar que la estructura del archivo es bastante intuitiva, veamos
algunos datos b/sicos!
Para iniciar, cada host virtual est/ delimitado de la siguiente manera>
123
server { ...}
Dentro de cada host podremos especi-car cosas como>
$(l puerto donde escucha ginx y el nombre del host>
7/21/2019 Apache y Nginx
6/8
1234
...listen 80;server_name dominio.com;...
$ (l directorio ra+z del servidor y nombres de los archivos index>
1234
root /Users/jonathanwiesel/www;inde inde.html inde.htm;...
$ Ebicaciones, estas nos sirven para delimitar di)erentes comportamientos para
cada /rea espec+-ca del servidor, ginx siempre tratar/ de buscar la ubicacin
m/s especi-ca, de lo contrario recurrir/ a la ubicacin por de)ecto G>
123
location ! "/#oro/$%&.'() { ret*rn 301 )scheme+//#oro.dominio.com/)1;}
(n este caso cualquier ubicacin que tenga el su-*o G)oro ser/ trans)erida alsubdominio )oro!dominio!com!
En e*emplo de caching de im/genes bastante Ftil>
123
location !' ,.$js-css-n-j-je-i#-ico() { eires 30d;}
(sto le indicar/ al explorador del cliente que debe mantener en cache por
12348101112131411118120212223
location ! ,.h) { #astci_ass localhost+000;
#astci_aram U567_96:< )=*er>_strin; #astci_aram 65U59_?59@AB )re=*est_method; #astci_aram CA959_97&5 )content_t>e; #astci_aram CA959_D5
12348
101112131411
server { listen 443; server_name localhost;
root html; inde inde.html inde.htm;
ssl on;
ssl_certi#icate cert.em; ssl_certi#icate_He> cert.He>;
ssl_session_timeo*t m;
ssl_rotocols Dv3 9Dv1; ssl_cihers EDD+IEB@+I5J&A69+6C4K6E+K@:
7/21/2019 Apache y Nginx
8/8
118
ssl_re#er_server_cihers on; }
Proxies en reversa a Apache &cortes+a de nix7ra)t'>
1234810
111213141
1118120
21222324
*stream aacheh { server 12.18.1.11+80;}server { listen 202.4.1.1+80; server_name www.dominio.com; access_lo /var/lo/nin/lo/www.dominio.access.lo main; error_lo /var/lo/nin/lo/www.dominio.error.lo; root /*sr/share/nin/html;
inde inde.html inde.htm; MM mandamos la eticiNn a aache MM location / { ro>_ass htt+//aacheh; ro>_net_*stream error timeo*t invalid_header htt_00 htt_02 htt_03htt_04; ro>_redirect o##; ro>_O*##erin o##; ro>_set_header @ost )host; ro>_set_header JP6ealP:& )remote_addr; ro>_set_header JPForwardedPFor )ro>_add__#orwarded_#or;
}}
Conclusin
ginx es una herramienta muy poderosa, capaz de muchas cosas
impresionantes y sin apoderarse de tu presupuesto en hard9are! 7iertamente
no es el Fnico que desea destronar a Apache, Iighttpd es una buena solucin a
considerar, lo importante es probar otras opciones y no quedarnos con lo queconocemos y nos sentimos cmodos ya que experimentando es la manera que
podemos determinar con propiedad quL es lo bene-cioso para nosotros!