Instalar el módulo PageSpeed en NGINX

Cuando os hablaba en el anterior post de cómo activar la compresión Gzip en Nginx, Google ya tenía en versión alpha su módulo de optimización automática, PageSpeed. Hace unos días este módulo dejó su versión alpha para pasar a beta. He tenido ocasión de configurarlo en uno de mis servidores bajo Nginx 1.4.1.

Instalando PageSpeed

Lo primero a tener en cuenta es que Nginx no permite la carga dinámica de módulos por lo que tendremos que bajarnos la fuente de Nginx para compilar Nginx añadiendo el módulo PageSpeed.

Lo primero es bajarse las dependencias si es que nos las tenemos ya.

$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev

Tras esto nos bajamos la última versión de Nginx y PageSpeed.

$ cd ~
$ wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.5.27.3-beta.zip
$ unzip release-1.5.27.3-beta.zip

$ wget http://nginx.org/download/nginx-1.4.1.tar.gz
$ tar -xvzf nginx-1.4.1.tar.gz

Tras la descarga y descompresión de las últimas versiones de Nginx y PageSpeed, vamos a compilar Nginx añadiendo el módulo de PageSpeed.

$ cd ~
$ cd nginx-1.4.1/
$ ./configure --add-module=$HOME/ngx_pagespeed-release-1.5.27.3-beta
$ make
$ sudo make install

Usando PageSpeed

Tras estos sencillos comandos solo nos queda activar el módulo en nuestro server Nginx o en aquellos VHosts que nos interesen.

Para ello debemos incluir en el módulo server del nginx.conf:

pagespeed on;

# needs to exist and be writable by nginx
pagespeed FileCachePath /var/ngx_pagespeed_cache;

Importante crear la carpeta ngx_pagespeed_cache dentro de var con permisos para el usuario nginx.

También es importante incluir las siguientes lineas:

#  Ensure requests for pagespeed optimized resources go to the pagespeed
#  handler and no extraneous headers get set.
location ~ ".pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }

Todo listo para reiniciar Nginx y comprobar con el comando Curl si tenemos una referencia "X-Page-Speed" en nuestras cabeceras.

$ curl -I "http://myhost.com"
# X-Page-Speed: 1.4.0.0-2748

Si todo está bien podemos configurar los filtros PageSpeed que nos interesen. Para esto se puede revisar la documentación del módulo PageSpeed para Apache y tener en cuenta que deberemos cambiar el prefijo ModPagespeed por pagespeed.