Cómo activar la compresión Gzip en Nginx

Dificultad: Fácil
Tiempo de Lectura: 2 minutos

La compresión Gzip es un tipo de compresión de datos que se usa para alivianar el peso de la información y así hacer que se despache más rápido, a la vez que se consume menos transferencia y ancho de banda. Nginx, al igual que Apache, también incorpora un completo soporte para la misma. Hoy veremos cómo activar la compresión Gzip en Nginx para hacer que nuestro sitio vuele de rápido.

El primer paso es editar el archivo nginx.conf, que generalmente se ubica en /etc/nginx/nginx.conf o  /usr/local/nginx/conf/nginx.conf, dependiendo de la distribución Linux que uses.

Una vez allí, debes agregar este código:

# Activar Compresión Gzip
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;
gzip_vary on;
# Fin de Compresión Gzip

Una vez listo, hacemos un reload de la configuración para que los cambios se apliquen:

/etc/init.d/nginx reload

Directivas de la compresión Gzip de Nginx

Vamos a ver qué significa cada opción que agregamos y qué papel juegan dentro de la compresión Gzip.

  • gzip on; # Activa o desactiva la compresión. Valores: on/off.
  • gzip_min_length 1100; # El tamaño mínimo requerido para comprimir un archivo.
  • gzip_buffers 4 32k; # El tamaño del buffer de Gzip.
  • gzip_types text/plain application/x-javascript text/xml text/css; # Especifica qué tipos de archivos se permiten comprimir, en este caso texto, javascript, xml y css.
  • gzip_vary on; # Activa la respuesta en las cabeceras de tipo «Vary: Accept-Encoding»

Niveles de Compresión Gzip

Algo que no está en la configuación de ejemplo pero que vale la pena comentar, es que existen muchos niveles de compresión:

  • gzip_comp_level 1; # El valor mínimo de compresión que viene por defecto.
  • gzip_comp_level 9; # El valor máximo de compresión que puedes aplicar.

Lo importante que debes saber es que a mayor compresión, tendrás mayor consumo de CPU. En nuestras pruebas, un valor de 6 a 7 suele dar excelentes resultados sin comprometer el uso de CPU a niveles anormales.

¿Cómo puedo saber si Gzip efectivamente está activo en Nginx?

Usaremos el comando curl desde la consola, por ejemplo:

curl --header "Accept-Encoding: gzip,deflate,sdch" -I http://www.tusitio.com

El output debería mostrarte algo como esto:

[webtech@localhost ~]$ curl --header "Accept-Encoding: gzip,deflate,sdch" -I https://guiadev.com
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 11 Feb 2015 11:30:59 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate
WP-Super-Cache: Served supercache file from PHP
Content-Encoding: gzip

Si ves que dice «Content-Encoding: gzip«, eso significa que la página esta siendo comprimida usando el módulo Gzip de Nginx. Otra forma de comprobarlo es usando herramientas de terceros como Gzip Test.

Conclusiones

Como ves, activar Gzip en Nginx es relativamente fácil, toma sólo 5 minutos y los beneficios son enormes. Para que tengas una idea, en nuestras pruebas usándolo desde hace años hemos visto que la compresión suele ir entre 50% a 75% del peso inicial de los archivos, aumentando la velocidad de despacho en 2 a 3 veces comparado con un servidor sin compresión Gzip.

En Infranetworking todos nuestros Servidores Dedicados y Cloud VPS que corren con Nginx tienen la compresión Gzip activada por defecto, por lo cual puedes estar tranquilo que siempre tendrás un excelente rendimiento.


¿Te resultó útil el artículo? Compártelo con tus colegas: