PageSpeed Beta está disponible para nginx, el equivalente nginx de mod_pagespeed para Apache. Este módulo aplica las mejores prácticas de rendimiento web a las páginas y los activos asociados (CSS, JavaScript, imágenes) y, por lo tanto, acelera su sitio web y reduce los tiempos de carga. Este tutorial explica cómo usar PageSpeed con nginx en Debian Jessie/testing.
¡No emito ninguna garantía de que esto funcione para usted!
1 Construyendo nginx con PageSpeed
nginx no admite la carga dinámica de módulos, por lo tanto, debemos reconstruirlo con soporte para PageSpeed. Construiremos nginx como un paquete .deb para que podamos reemplazar nuestra instalación de nginx existente con él (o instalarlo fácilmente en otros sistemas).
Cree primero el directorio de compilación:
cd /usr/src
mkdir velocidad de página &&cd velocidad de página
Asegúrese de tener líneas deb y deb-src para Jessie/testing en /etc/apt/sources.list:
vi /etc/apt/sources.list
[...]
deb http://ftp.de.debian.org/debian testing main contrib non-free
deb-src http://ftp.de.debian.org/debian testing main contrib non-free
[...] |
Actualice su lista de paquetes e instale algunos requisitos previos:
apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev
Descargue las fuentes de nginx y las dependencias de compilación:
apt-get source nginx
apt-get build-dep nginx
Revisemos nuestra versión de nginx:
ls -l
[email protected]:/usr/src/pagespeed# ls -l
total 2292
drwxr-xr-x 10 root root 4096 5 de febrero 12:54 nginx-1.4.4
-rw -r--r-- 1 raíz raíz 1568452 7 de enero 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 raíz raíz 2171 7 de enero 19:22 nginx_1 .4.4-4.dsc
-rw-r--r-- 1 root root 768217 21 de noviembre 16:28 nginx_1.4.4.orig.tar.gz
[email protected]:/usr/src /pagespeed#
Nuestra versión nginx es 1.4.4. Vayamos al directorio debian/modules de las fuentes nginx descargadas...
cd /usr/src/pagespeed/nginx-1.4.4/debian/modules
... y descargue las fuentes de PageSpeed (puede buscar la última versión en esta página:https://github.com/pagespeed/ngx_pagespeed/releases; en este ejemplo, la versión es 1.7.30.3-beta; si su versión es diferente , asegúrese de reemplazarlo en el resto de este tutorial):
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.7.30.3-beta.zip
descomprimir la versión-1.7.30.3-beta.zip
cd ngx_pagespeed-release-1.7.30.3 -beta/
wget https://dl.google.com/dl/page-speed/psol/1.7.30.3.tar.gz
tar -xzvf 1.7.30.3.tar.gz
Editemos el archivo debian/rules:
vi /usr/src/pagespeed/nginx-1.4.4/debian/rules
En ese archivo encontrará cuatro secciones config.status (config.status.full, config.status.light, config.status.extras, config.status.naxsi). Agregue la línea --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ a cada uno de ellos, justo antes de la línea $(CONFIGURE_OPTS)>[email protected], p. de la siguiente manera:
[...]
config.status.full: config.env.full
cd $(BUILDDIR_full) && CFLAGS="$(CFLAGS)" CORE_LINK="$(LDFLAGS)" ./configure \
--prefix=/usr/share/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--lock-path=/var/lock/nginx.lock \
--pid-path=/run/nginx.pid \
--with-pcre-jit \
--with-debug \
--with-http_addition_module \
--with-http_dav_module \
--with-http_geoip_module \
--with-http_gzip_static_module \
--with-http_image_filter_module \
--with-http_realip_module \
--with-http_spdy_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_sub_module \
--with-http_xslt_module \
--with-ipv6 \
--with-mail \
--with-mail_ssl_module \
--add-module=$(MODULESDIR)/nginx-auth-pam \
--add-module=$(MODULESDIR)/nginx-dav-ext-module \
--add-module=$(MODULESDIR)/nginx-echo \
--add-module=$(MODULESDIR)/nginx-upstream-fair \
--add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
--add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \
$(CONFIGURE_OPTS) >[email protected]
touch [email protected]
[...] |
Ahora construyamos nuestros nuevos paquetes nginx:
cd /usr/src/pagespeed/nginx-1.4.4/ && dpkg-buildpackage -b
Luego, echemos un vistazo a los paquetes generados:
cd /usr/src/pagespeed
ls -l
[email protected]:/usr/src/pagespeed# ls -l
total 67260
drwxr-xr-x 10 root root 4096 5 de febrero 13:18 nginx-1.4.4
-rw -r--r-- 1 root root 67132 5 de febrero 13:18 nginx_1.4.4-4_all.deb
-rw-r--r-- 1 root root 4749 5 de febrero 13:19 nginx_1.4.4-4_amd64 .cambios
-rw-r--r-- 1 raíz raíz 1568452 7 de enero 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 raíz root 2171 7 de enero 19:22 nginx_1.4.4-4.dsc
-rw-r--r-- 1 root root 768217 21 de noviembre 16:28 nginx_1.4.4.orig.tar.gz
- rw-r--r-- 1 root root 79288 5 de febrero 13:18 nginx-common_1.4.4-4_all.deb
-rw-r--r-- 1 root root 78448 5 de febrero 13:18 nginx- doc_1.4.4-4_all.deb
-rw-r--r-- 1 raíz raíz 2520834 5 febrero 13:19 nginx-extras_1.4.4-4_amd64.deb
-rw-r--r- - 1 root root 25480472 5 de febrero 13:19 nginx-extras-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 2372314 5 de febrero 13:18 nginx-full_1.4.4-4_amd64 .deb
-rw-r--r-- 1 raíz raíz 23850670 5 de febrero 13:19 nginx-full-dbg_1.4.4-4_amd64.deb
-rw-r-- r-- 1 root root 2349992 5 de febrero 13:19 nginx-light_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 3416998 5 de febrero 13:19 nginx-light-dbg_1.4.4 -4_amd64.deb
-rw-r--r-- 1 raíz raíz 2384044 5 febrero 13:19 nginx-naxsi_1.4.4-4_amd64.deb
-rw-r--r-- 1 raíz root 3581602 5 de febrero 13:19 nginx-naxsi-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 root root 309478 5 de febrero 13:18 nginx-naxsi-ui_1.4.4-4_all. deb
[correo electrónico protegido]:/usr/src/pagespeed#
Ahora podemos instalar nginx con soporte de PageSpeed de la siguiente manera:
dpkg --install nginx-common_1.4.4-4_all.deb nginx_1.4.4-4_all.deb nginx-full_1.4.4-4_amd64.deb
/etc/init.d/nginx restart
Verifiquemos si el módulo PageSpeed se creó correctamente:
nginx -V
Debería ver el módulo ngx_pagespeed en el resultado:
[email protected]:/usr/src/pagespeed# nginx -V
versión de nginx:nginx/1.4.4
Compatibilidad con TLS SNI habilitada
configurar argumentos:--prefix=/usr/share /nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib /nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with -http_gzip_static_module --con-http_image_filter_module --con-http_realip_module --con-http_spdy_module --con-http_stub_status_module --con-http_ssl_module --con-http_sub_module --con-http_xslt_module --con-ipv6 --with-mail --with -mail_ssl_module --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/nginx-auth -pam --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/nginx-dav-ext-module --add-module=/usr/src/pagespeed/nginx-1.4.4 /debian/modules/nginx-echo --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/nginx-upstream-fair --add-module=/usr/src/pagespeed/nginx -1.4.4/debian/modules/ngx_http_substitutions_filter_module --add-module=/usr/src/pagespeed/nginx-1.4.4/debian/modules/ngx_pagespeed-release-1.7.30.3-beta
[email protected] :/usr/src/pagespeed#
2 Configuración de PageSpeed
Para habilitar PageSpeed, abra /etc/nginx/nginx.conf...
vi /etc/nginx/nginx.conf
... y agregue las líneas pagespeed on; y velocidad de página FileCachePath /var/ngx_pagespeed_cache; antes de cualquier host virtual:
[...]
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
[...] |
Cree el directorio de caché y vuelva a cargar nginx:
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx reload
Carguemos una página y verifiquemos si PageSpeed se menciona en el resultado:
curl -I -p http://localhost|grep X-Page-Speed
[email protected]:/usr/src/pagespeed# curl -I -p http://localhost|grep X-Page-Speed
% Total % Recibido % Xferd Velocidad media Tiempo Tiempo Tiempo Actual
D carga Subir Total Pasado Velocidad izquierda
0 0 0 0 0 0 0 0 -:--:-- --:--:-- --:--:-- 0
X-Page- Velocidad: 1.7.30.3-3721
[correo electrónico protegido]:/usr/src/pagespeed#
Ahora podemos configurar PageSpeed individualmente o cada vhost, p. así:
vi /etc/nginx/sites-available/example.com.vhost
server {
[...]
# let's speed up PageSpeed by storing it in the super duper fast memcached
pagespeed MemcachedThreads 1;
pagespeed MemcachedServers "localhost:11211";
# Filter settings
pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters collapse_whitespace,remove_comments;
# 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_global_statistics {
allow 127.0.0.1;
deny all;
}
location /ngx_pagespeed_message {
allow 127.0.0.1;
deny all;
}
location /pagespeed_console {
allow 127.0.0.1;
deny all;
}
[...]
} |
La línea importante es la línea Pagespeed EnableFilters que le dice a PageSpeed qué filtros debe aplicar. Puede encontrar una lista de todos los filtros aquí:http://ngxpagespeed.com/ngx_pagespeed_example/
No olvide reiniciar nginx después:
/etc/init.d/nginx reload
Cuando abre una página ahora y echa un vistazo a los encabezados (por ejemplo, con el complemento de encabezados HTTP en vivo para FireFox), debería ver una línea de velocidad de página x:

Puede verificar las fuentes HTML de sus páginas para ver si los filtros de PageSpeed funcionan como se esperaba.
3 Enlaces
- Blog de desarrolladores de Google:http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
- ngx_pagespeed:https://developers.google.com/speed/pagespeed/ngx
- Construir/usar PageSpeed:https://github.com/pagespeed/ngx_pagespeed
- Ejemplos de filtros ngx_pagespeed:http://ngxpagespeed.com/ngx_pagespeed_example/
Sobre el autor

Falko Timme es el propietario de
Timme Hosting (alojamiento web nginx ultrarrápido). Es el mantenedor principal de HowtoForge (desde 2005) y uno de los principales desarrolladores de ISPConfig (desde 2000). También ha contribuido al libro de O'Reilly "Administración del sistema Linux".