Instalación del módulo PageSpeed para Nginx en Debian 9

Cómo compilar Nginx con ngx_pagespeed para la optimización automática del rendimiento del sitio web.

ngx_pagespeed es un módulo de Nginx que optimiza automáticamente tus páginas web — comprime imágenes, minifica CSS y JavaScript, gestiona el caché y mucho más — sin tocar una sola línea del código de tu sitio.

Antes de empezar

Esta guía implica recompilar Nginx desde el código fuente. Asegúrate de tener una copia de seguridad de tu configuración actual de Nginx y anota los flags de compilación existentes — los necesitarás.

Instalación de las dependencias de compilación

sudo apt-get build-dep nginx
sudo apt-get update
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev

Creación del directorio de trabajo

mkdir ~/custom-nginx
cd ~/custom-nginx

Descarga del código fuente de Nginx

Comprueba qué versión de Nginx tienes instalada actualmente:

nginx -v
nginx version: nginx/1.18.0

Descarga el tarball de fuentes correspondiente desde el sitio oficial de Nginx:

sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
sudo tar zxvf nginx-1.18.0.tar.gz

Configuración de ngx_pagespeed

Accede al directorio de módulos de Nginx:

cd nginx-1.18.0/src/http/modules/

Descarga ngx_pagespeed desde su repositorio de GitHub:

sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip
sudo unzip master.zip
sudo mv incubator-pagespeed-ngx-master ngx_pagespeed
cd ngx_pagespeed

Descarga las PageSpeed Optimization Libraries (psol) — necesarias para la compilación:

sudo wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
sudo tar -xzvf 1.13.35.2-x64.tar.gz

Compilación de Nginx con el módulo pagespeed

Vuelve al directorio de fuentes de Nginx:

cd ~/custom-nginx/nginx-1.18.0/

Primero, comprueba los flags de compilación con los que se construyó tu Nginx actual — tendrás que replicarlos:

nginx -V

Ejecuta ./configure con esos mismos flags, añadiendo --add-module al final:

sudo ./configure \
  --prefix=/etc/nginx \
  --sbin-path=/usr/sbin/nginx \
  --modules-path=/usr/lib/nginx/modules \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx.pid \
  --lock-path=/var/run/nginx.lock \
  --http-client-body-temp-path=/var/cache/nginx/client_temp \
  --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
  --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
  --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
  --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
  --user=nginx \
  --group=nginx \
  --with-compat \
  --with-file-aio \
  --with-threads \
  --with-http_addition_module \
  --with-http_auth_request_module \
  --with-http_dav_module \
  --with-http_flv_module \
  --with-http_gunzip_module \
  --with-http_gzip_static_module \
  --with-http_mp4_module \
  --with-http_random_index_module \
  --with-http_realip_module \
  --with-http_secure_link_module \
  --with-http_slice_module \
  --with-http_ssl_module \
  --with-http_stub_status_module \
  --with-http_sub_module \
  --with-http_v2_module \
  --with-mail \
  --with-mail_ssl_module \
  --with-stream \
  --with-stream_realip_module \
  --with-stream_ssl_module \
  --with-stream_ssl_preread_module \
  --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' \
  --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' \
  --add-module=./src/http/modules/ngx_pagespeed/

Usa siempre los flags de la salida de tu propio nginx -V — pueden diferir del ejemplo anterior según cómo se haya compilado el paquete en tu sistema.

Compila e instala:

sudo make
sudo make install

Activación de ngx_pagespeed

Crea un directorio de caché para el módulo:

sudo mkdir -p /var/ngx_pagespeed_cache
sudo chown -R www-data:www-data /var/ngx_pagespeed_cache

Abre la configuración principal de Nginx:

sudo nano /etc/nginx/nginx.conf

Añade lo siguiente dentro del bloque http:

##
# Pagespeed Settings
##
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;

En cada bloque server, añade estas reglas de location:

# Enrutar correctamente las peticiones a los recursos optimizados por pagespeed
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
    add_header "" "";
}
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Reinicia Nginx para aplicar los cambios:

sudo service nginx restart

Verificación de la instalación

Comprueba que el módulo aparece en los flags de compilación:

sudo /usr/sbin/nginx -V

Deberías ver --add-module=./src/http/modules/ngx_pagespeed/ en la salida.

A continuación, confirma que el módulo está realmente en ejecución inspeccionando las cabeceras de respuesta:

curl -I -p YOUR_SERVER_IP

Una instalación correcta incluirá una cabecera X-Page-Speed en la respuesta:

HTTP/1.1 200 OK
Server: nginx
X-Page-Speed: 1.13.35.2-0
Cache-Control: max-age=0, no-cache

Esa cabecera es tu confirmación: ngx_pagespeed está instalado y en funcionamiento.

Ayuda

¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos