Cómo configurar Nginx con el módulo Google Pagespeed en Debian 11

El módulo Google Pagespeed es un módulo de código abierto para optimizar tus sitios web bajo el servidor web Nginx y Apache. El módulo Pagespeed es un módulo a nivel de servidor que se instala junto al servidor web Nginx y Apache.

El módulo Pagespeed mejora el rendimiento y la velocidad de tu sitio web optimizando los archivos estáticos de tus sitios web. El módulo Pagespeed optimiza las imágenes de tus sitios web, minifica los archivos estáticos como HTML, CSS y JavaScript, y optimiza el almacenamiento en caché de los archivos.

En este tutorial, te mostraremos cómo construir el módulo Nginx Pagespeed en la última versión de Debian 11 Bullseye. Esta guía puede aplicarse a la corriente de tu instalación de Nginx, ya que sólo tienes que construir el módulo de Nginx.

Requisitos previos

Antes de empezar, asegúrate de que tienes los siguientes requisitos

  • Sistema operativo: Debian 11 Bullseye
  • Privilegios de root

Ahora vamos a empezar.

Instalar las dependencias de los paquetes

En primer lugar, vas a instalar las dependencias de los paquetes para compilar el módulo Nginx.

1. Ejecuta el siguiente comando apt para actualizar los repositorios actuales de tu sistema.

sudo apt update

2. A continuación, instala las dependencias de los paquetes básicos para la compilación de programas mediante el comando apt que aparece a continuación.

sudo apt install curl dpkg-dev build-essential zlib1g-dev git libpcre3 git libpcre3-dev unzip uuid-dev -y

3. Después, instala las dependencias de compilación para compilar el módulo Nginx.

sudo apt build-dep nginx -y

Comprobación de la versión actual de Nginx

Para construir un módulo Nginx Pagespeed personalizado, asegúrate de que tu servidor web Nginx actual mantiene la misma versión del código fuente de Nginx que vas a utilizar para construir el módulo Nginx.

1. Ejecuta el siguiente comando para comprobar la versión de Nginx.

nginx -v

Para este ejemplo, la versión actual de Nginx instalada en nuestra máquina es la‘1.18.0‘. A continuación se muestra la salida similar que verás.

nginx version: nginx/1.18.0

Opcionalmente, si no tienes el paquete Nginx en tu sistema, instálalo desde el repositorio oficial de Debian utilizando el comando apt que aparece a continuación.

sudo apt install nginx -y

2. A continuación, crea una nueva variable de entorno temporal para tu versión de Nginx utilizando el siguiente comando.

export NG_VER=1.18.0

Descarga el código fuente de Nginx y Pagespeed

En este paso, descargarás el código fuente de Nginx y el módulo Pagespeed en tu servidor. Este código fuente de Nginx tendrá la misma versión que tu paquete actual de Nginx.

1. Crea un nuevo directorio de proyecto‘/usr/src/nginx‘ y entra en él.

mkdir -p /usr/src/nginx; cd /usr/src/nginx

2. Ahora ejecuta el siguiente comando para descargar el código fuente de Nginx y extraerlo.

wget http://nginx.org/download/nginx-$NG_VER.tar.gz
tar -xzvf nginx-$NG_VER.tar.gz

3. A continuación, clona el módulo Nginx Pagespeed en el directorio actual y, una vez completado el proceso, verás un nuevo directorio ‘incubator-pagespeed-ngx’.

git clone https://github.com/apache/incubator-pagespeed-ngx.git

4. Desplázate al directorio ‘incubator-pagespeed-ngx‘ y cambia a la rama estable del módulo Nginx Pagespeed.

cd incubator-pagespeed-ngx/
git checkout latest-stable

5. Comprueba el archivo‘PSOL_BINARY_URL‘ para obtener el enlace de descarga de la biblioteca de optimización de páginas (PSOL). Esta biblioteca es necesaria para el módulo Nginx Pagespeed.

cat PSOL_BINARY_URL

Verás una salida similar a la de abajo. La variable‘$BIT_SIZE_NAME‘ es la arquitectura de tu servidor.

wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-$BIT_SIZE_NAME.tar.gz

6. Ahora crea una nueva variable de entorno temporal ‘BIT_SIZE_NAME’ con el valor de la arquitectura de tu servidor. El ejemplo de abajo está usando ‘x64’ o arquitectura de servidor de 64 bits.

export BIT_SIZE_NAME=x64

7. Ahora descarga el código fuente de PSOL y extráelo.

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

Ahora estás listo para compilar el módulo Nginx Pagespeed.

Compilación del módulo Nginx Pagespeed

En este paso, compilarás el módulo Nginx Pagespeed. Al final, obtendrás el módulo Nginx con el formato ‘.so‘ que podrás aplicar a tu actual servidor web Nginx.

1. Cambia el directorio de trabajo al directorio del proyecto Nginx.

cd /usr/src/nginx/nginx-$NG_VER

2. Ejecuta el siguiente comando para configurar la compilación de tu módulo Nginx. Este comando también comprueba los requisitos de tu sistema, asegúrate de que no tienes ningún error.

./configure --with-compat --add-dynamic-module=../incubator-pagespeed-ngx

A continuación se muestra la salida que deberías obtener.

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

3. A continuación, compila el módulo Nginx Pagespeed con el siguiente comando.

make modules

Este comando tardará algún tiempo, dependiendo de la CPU y la memoria de tu sistema.

4. Una vez finalizado el proceso de compilación, tu módulo Pagespeed estará disponible como‘objs/ngx_pagespeed.so‘. Comprueba el módulo con el siguiente comando.

ls objs/ngx_pagespeed.so

Deberías obtener el módulo Nginx Pagespeed‘ngx_pagespeed.so’ como se indica a continuación.

-rwxr-xr-x 1 root root 19M Dec  8 21:44 objs/ngx_pagespeed.so

Añadir el módulo Pagespeed a la instalación actual de Nginx

En este paso, implementarás el módulo Nginx Pagespeed a tu instalación actual de Nginx. Para ello, copia el módulo Pagespeed ‘ngx_pagespeed.so’ al directorio de módulos de Nginx y añade una nueva configuración para habilitarlo.

1. Copia el módulo ‘ngx_pagespeed.so’ al directorio de módulos de Nginx por defecto ‘/usr/share/nginx/modules‘.

cp /usr/src/nginx/nginx-$NG_VER/objs/ngx_pagespeed.so /usr/share/nginx/modules

2. Crea un nuevo archivo de configuración para habilitar el módulo Pagespeedd.

nano /usr/share/nginx/modules-available/ngx-pagespeed.conf

Copia y pega la siguiente configuración.

load_module modules/ngx_pagespeed.so;

Guarda la configuración y sal.

3. Activa el módulo Pagespeed creando un enlace simbólico de configuración‘ngx-pagespeed.conf‘ al directorio‘/etc/nginx/modules-enabled/‘.

ln -s /usr/share/nginx/modules-available/ngx-pagespeed.conf /etc/nginx/modules-enabled/70-ngx-pagespeed.conf

4. A continuación, crea una nueva configuración ‘pagespeed.conf’ en el directorio ‘/etc/nginx‘.

nano /etc/nginx/pagespeed.conf

Copia y pega la siguiente configuración.

pagespeed on;

# Needs to exist and be writable by nginx.  Use tmpfs for best performance.
pagespeed FileCachePath /var/ngx_pagespeed_cache;

# 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 ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

Guarda la configuración y sal.

5. A continuación, crea un nuevo directorio para almacenar la caché de Nginx Pagespeed y asegúrate de que el usuario‘www-data‘ de Nginx puede escribir en el directorio.

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

Ahora el módulo Nginx Pagespeed está añadido a tu instalación actual de Nginx. Ve al siguiente paso para habilitarlo en tus hosts virtuales (bloques de servidores).

Añadir el módulo Nginx Pagespeed en tu host virtual

Para habilitar el módulo Pagespeed en tu host virtual, añade la configuración‘pagespeed.conf ‘ al archivo de configuración de tu host virtual utilizando la opción ‘include’.

1. Para este ejemplo, añade la habilitación del módulo Pagespeed al host virtual‘default‘. 2. Edita la configuración ‘ /etc/nginx/sites-available/default ‘ utilizando el editor nano.

nano /etc/nginx/sites-available/default

Añade la configuración ‘include /etc/nginx/pagespeed.conf;’ dentro de la sección ‘server {…} ‘ como se indica a continuación.

server {

  .....
  ....

  include /etc/nginx/pagespeed.conf;
}

Guarda la configuración y sal.

2. Verifica la configuración de Nginx y asegúrate de que no te da ningún error. Después, reinicia el servicio Nginx para aplicar la nueva configuración.

nginx -t
sudo systemctl restart nginx

Verificación del módulo Nginx Pagespeed

Para verificar la instalación e implementación del módulo Nginx Pagespeed, puedes utilizar el comando curl para obtener las cabeceras HTTP de tu servidor web Nginx o utilizar el elemento Inspect en tu navegador web.

1. Ejecuta el siguiente comando curl para obtener las cabeceras HTTP de tu servidor web Nginx.

curl -I https://domain.com/

Ahora deberías obtener la salida que se muestra a continuación. La sección de cabecera adicional‘X-Page-Speed‘ significa que el módulo Nginx Pagespeed está activado.

HTTP/1.1 200 OK
Server: nginx/1.18.0
Content-Type: text/html
Connection: keep-alive
Date: Wed, 01 Dec 2021 22:02:52 GMT
X-Page-Speed: 1.13.35.2-0
Cache-Control: max-age=0, no-cache

Módulo Nginx Pagespeed

2. Para comprobarlo desde tu navegador web, visita tu dominio y haz clic con el botón derecho del ratón en la página, luego selecciona el menú«Inspeccionar«.

Vuelve a cargar tu página web y verás las cabeceras HTTP detalladas como se indica a continuación.

Módulo Nginx Pagespeed

Conclusión

¡Enhorabuena! Has aprendido a compilar el módulo Nginx Pagespeed y a implementarlo en la instalación actual de Nginx. Sólo tienes que incluir la configuración ‘pagespeed.conf’ en la configuración de tu host virtual.

También te podría gustar...