Activar la compresión Gzip en un servidor NGINX

Optimizar la velocidad de nuestro sitio Web es un plus en experiencia de usuario y SEO. Para servidores Apache tenemos el módulo Google PageSpeed que nos facilita la tarea. En Nginx existe una versión alpha del módulo ngx_pagespeed.

Aunque estos módulos mejoran la velocidad de carga de una Web combinando y minificando archivos Javascript, CSS, ... además de eliminar metadatos y ofrecer una versión optimizada de las imagénes, no está de más configurar la compresión Gzip en nuestro Webserver.

¿Qué es Http-Gzip?

HttpGzip es un módulo de Nginx (también existe en Apache) que se encarga de la compresión y descompresión "al vuelo" de ficheros. Se usa mucho en Webservers para mejorar la carga de las Webs.

Conociendo las directivas

Como todo módulo tiene unas opciones de configuración que conviene saber para aplicarlas según nuestras necesidades.

  • gzip_types: se indica los tipos de archivos a tratar.
  • gzip_disable: permite deshabilitar la compresión para determinados User-Agents.
  • gzip_comp_level: nivel de compresión (0 mínimo, 9 máximo).
  • gzip_vary: activa la respuesta "Vary: Accept-Encoding" en la cabecera.
  • gzip_proxied: permite la configuración de compresión a través de un proxy.
  • gzip_buffers: configuración del buffer.

La activación y configuración del módulo se realiza dentro de las opciones http del archivo de configuración de NGINX.

Abrir el archivo de configuración de NGINX
$ sudo vi /etc/nginx/nginx.conf
Añadir las lineas de configuración de Gzip dentro de http
http {
    gzip on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
}
Reiniciar el servidor
$ sudo service nginx restart

Para más información sobre Gzip para NGINX podéis consultar la página oficial.