PageSpeed Beta est disponible pour nginx, l'équivalent nginx de mod_pagespeed pour Apache. Ce module applique les meilleures pratiques de performance Web aux pages et aux actifs associés (CSS, JavaScript, images) et accélère ainsi votre site Web et réduit les temps de chargement. Ce tutoriel explique comment utiliser PageSpeed avec nginx sur Debian Jessie/testing.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Construire nginx avec PageSpeed
nginx ne prend pas en charge le chargement dynamique des modules, nous devons donc le reconstruire avec le support de PageSpeed. Nous allons construire nginx en tant que package .deb afin de pouvoir remplacer notre installation nginx existante par celui-ci (ou l'installer facilement sur d'autres systèmes).
Créez d'abord le répertoire de construction :
cd /usr/src
mkdir pagespeed &&cd pagespeed
Assurez-vous d'avoir les lignes deb et deb-src pour Jessie/testing dans /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 [...] |
Mettez à jour votre liste de packages et installez certains prérequis :
apt-get update
apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip curl libcurl4-openssl-dev libossp-uuid-dev
Téléchargez les sources nginx et les dépendances de compilation :
apt-get source nginx
apt-get build-dep nginx
Vérifions notre version nginx :
ls -l
[email protected] :/usr/src/pagespeed# ls -l
total 2292
drwxr-xr-x 10 root root 4096 5 février 12:54 nginx-1.4.4
-rw -r--r-- 1 root root 1568452 7 janvier 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 root root 2171 7 janvier 19:22 nginx_1 .4.4-4.dsc
-rw-r--r-- 1 racine racine 768217 21 nov 16:28 nginx_1.4.4.orig.tar.gz
[email protected] :/usr/src /pagespeed#
Notre version de nginx est la 1.4.4. Allons dans le répertoire debian/modules des sources nginx téléchargées...
cd /usr/src/pagespeed/nginx-1.4.4/debian/modules
... et téléchargez les sources PageSpeed (vous pouvez vérifier la dernière version sur cette page :https://github.com/pagespeed/ngx_pagespeed/releases - dans cet exemple, la version est 1.7.30.3-beta ; si votre version diffère , assurez-vous de le remplacer dans le reste de ce tutoriel) :
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.7.30.3-beta.zip
décompressez la version-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
Modifions le fichier debian/rules :
vi /usr/src/pagespeed/nginx-1.4.4/debian/rules
Dans ce fichier, vous trouverez quatre sections config.status (config.status.full, config.status.light, config.status.extras, config.status.naxsi). Ajoutez la ligne --add-module=$(MODULESDIR)/ngx_pagespeed-release-1.7.30.3-beta \ à chacun d'eux, juste avant la ligne $(CONFIGURE_OPTS)>[email protected], par ex. comme suit :
[...] 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] [...] |
Construisons maintenant nos nouveaux packages nginx :
cd /usr/src/pagespeed/nginx-1.4.4/ && dpkg-buildpackage -b
Ensuite, regardons les packages générés :
cd /usr/src/pagespeed
ls -l
[email protected] :/usr/src/pagespeed# ls -l
total 67260
drwxr-xr-x 10 root root 4096 Feb 5 13:18 nginx-1.4.4
-rw -r--r-- 1 racine racine 67132 5 fév 13:18 nginx_1.4.4-4_all.deb
-rw-r--r-- 1 racine racine 4749 5 février 13:19 nginx_1.4.4-4_amd64 .changes
-rw-r--r-- 1 racine racine 1568452 7 janvier 19:22 nginx_1.4.4-4.debian.tar.gz
-rw-r--r-- 1 racine root 2171 7 janvier 19:22 nginx_1.4.4-4.dsc
-rw-r--r-- 1 root root 768217 21 novembre 16:28 nginx_1.4.4.orig.tar.gz
- rw-r--r-- 1 racine racine 79288 5 février 13:18 nginx-common_1.4.4-4_all.deb
-rw-r--r-- 1 racine racine 78448 5 février 13:18 nginx- doc_1.4.4-4_all.deb
-rw-r--r-- 1 racine racine 2520834 5 février 13:19 nginx-extras_1.4.4-4_amd64.deb
-rw-r--r- - 1 racine root 25480472 5 février 13:19 nginx-extras-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 racine racine 2372314 5 février 13:18 nginx-full_1.4.4-4_amd64 .deb
-rw-r--r-- 1 racine racine 23850670 5 février 13:19 nginx-full-dbg_1.4.4-4_amd64.deb
-rw-r-- r-- 1 racine racine 2349992 5 février 13:19 nginx-light_1.4.4-4_amd64.deb
-rw-r--r-- 1 racine racine 3416998 5 février 13:19 nginx-light-dbg_1.4.4 -4_amd64.deb
-rw-r--r-- 1 racine racine 2384044 5 février 13:19 nginx-naxsi_1.4.4-4_amd64.deb
-rw-r--r-- 1 racine root 3581602 5 février 13:19 nginx-naxsi-dbg_1.4.4-4_amd64.deb
-rw-r--r-- 1 racine root 309478 5 février 13:18 nginx-naxsi-ui_1.4.4-4_all. deb
[email protected] :/usr/src/pagespeed#
Nous pouvons maintenant installer nginx avec le support de PageSpeed comme suit :
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
Vérifions si le module PageSpeed a été créé avec succès :
nginx -V
Vous devriez voir le module ngx_pagespeed dans la sortie :
[email protected] :/usr/src/pagespeed# nginx -V
version nginx :nginx/1.4.4
prise en charge TLS SNI activée
arguments de configuration :--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=/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 Configuration de PageSpeed
Pour activer PageSpeed, ouvrez /etc/nginx/nginx.conf...
vi /etc/nginx/nginx.conf
... et ajoutez les lignes pagespeed on ; et pagespeed FileCachePath /var/ngx_pagespeed_cache ; avant tout vhost :
[...] pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; [...] |
Créez le répertoire de cache et rechargez nginx :
mkdir /var/ngx_pagespeed_cache
chown -R www-data:www-data /var/ngx_pagespeed_cache
/etc/init.d/nginx reload
Chargeons une page et vérifions si PageSpeed est mentionné dans la sortie :
curl -I -p http://localhost|grep X-Page-Speed
[email protected] :/usr/src/pagespeed# curl -I -p http://localhost|grep X-Page-Speed
% Total % Receive % Xferd Vitesse moyenne Temps Temps Temps Actuel
Télécharger Total Dépense Vitesse gauche
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
X-Page- Vitesse : 1.7.30.3-3721
[email protected] :/usr/src/pagespeed#
Nous pouvons maintenant configurer PageSpeed individuellement ou chaque vhost, par ex. comme ceci :
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 ligne importante est la ligne pagespeed EnableFilters qui indique à PageSpeed quels filtres il doit appliquer. Vous pouvez trouver une liste de tous les filtres ici :http://ngxpagespeed.com/ngx_pagespeed_example/
N'oubliez pas de redémarrer nginx après :
/etc/init.d/nginx reload
Lorsque vous ouvrez une page maintenant et regardez les en-têtes (par exemple avec le module complémentaire d'en-têtes HTTP Live pour FireFox), vous devriez voir une ligne x-page-speed :
Vous pouvez vérifier les sources HTML de vos pages pour voir si les filtres PageSpeed fonctionnent comme prévu.
3 liens
- Blog des développeurs Google :http://googledevelopers.blogspot.nl/2013/04/speed-up-your-sites-with-pagespeed-for.html
- ngx_pagespeed :https://developers.google.com/speed/pagespeed/ngx
- Construire/utiliser PageSpeed :https://github.com/pagespeed/ngx_pagespeed
- Exemples de filtres ngx_pagespeed :http://ngxpagespeed.com/ngx_pagespeed_example/
À propos de l'auteur
Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le mainteneur principal de HowtoForge (depuis 2005) et l'un des principaux développeurs d'ISPConfig (depuis 2000). Il a également contribué au livre O'Reilly "Linux System Administration".