Installer NGinx avec PageSpeed sous Debian

25 février 2016 Auto-hébergement 0 Commentaire

NGinx contrairement à Apache ne prend pas en charge l’ajout de modules à chaud, cela signifie que si vous souhaitez ajouter un nouveau module à votre instance NGinx vous devez télécharger les sources de NGinx et le compiler avec votre nouveau module. Il existe cependant plusieurs versions du paquet NGinx dans les dépôts Debian, malheureusement aucune d’entre elles ne vous permettra d’installer NGinx avec PageSpeed.

Cependant les mainteneurs du dépôt dotdeb, dont j’ai déjà fait mention dans le billet consacré à l’installation de PHP 7.0, mettent à notre disposition une version du paquet NGinx pré-compilée avec le module PageSpeed, cool non ?

 

 

Installation du dépot dotdeb

Si ce n’est pas déjà fait, configurez aptitude afin qu’il prenne en charge les paquets dotdeb

Modifions notre fichier sources.list

sudo nano /etc/apt/sources.list

 

Ajoutons les lignes suivantes

deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

 

Récupérons et installons la clé GnuPG

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

 

Mettez à jour la liste des paquets disponibles

sudo apt-get update

 

 

Installation d’NGinx avec PageSpeed

Dans le dépôt dotdeb il existe, comme dans le dépôt officiel de Debian, 3 versions d’NGinx. Ici c’est la version nginx-extras qui nous intéresse, on peut facilement avoir plus d’informations sur ce paquet via la commande suivante

sudo apt-cache show nginx-extras

 

Voici les modules que le packager à ajouté au paquet nginx-extras

MODULES ADDED BY DOTDEB : Gunzip, File AIO, Thread pool, X-rid header, Push stream,
Naxsi, Auth LDAP, Pinba, PageSpeed, X-rid header, RTMP
Description-md5: 5a840c4d354d53e2719056018118719c
Homepage: http://nginx.net

 

L’installation d’NGinx avec PageSpeed se résume donc à la commande suivante

sudo apt-get install nginx-extras

 

 

Préparation de la mise en cache du module en RAM

Dans le fichier de configuration global du module PageSpeed nous allons choisir de mettre le cache en RAM. Préparons donc cela :

Créons le répertoire qui contiendra le cache

sudo mkdir /var/ngx_pagespeed_cache

 

Montons ce dossier dans tmpfs (ici 256 Mb seront utilisés vous pouvez augmenter ou réduire la taille)

sudo mount -t tmpfs -o size=256M tmpfs /var/ngx_pagespeed_cache

 

Afin que notre point de montage soit bien crée à chaque démarrage de notre serveur ajoutons les lignes suivantes au fichier /etc/fstab

tmpfs /var/ngx_pagespeed_cache tmpfs defaults,size=256M 0 0

 

 

Configuration d’NGinx avec PageSpeed

Commençons tout d’abord par la configuration globale du module.

sudo nano /etc/nginx/conf.d/pagespeed.conf

 

Ce nouveau fichier contient les directives PageSpeed qui seront chargées automatiquement dans votre instance NGinx.

Je vous conseille donc la lecture de la documentation du module afin de mieux comprendre les effets et risques, concernant le rendu d’affichage de votre site, engendrés par l’utilisation de ces filtres.

# Turning the module on and off
pagespeed on;

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

# PageSpeed Admin
pagespeed StatisticsPath /ngx_pagespeed_statistics;
pagespeed GlobalStatisticsPath /ngx_pagespeed_global_statistics;
pagespeed MessagesPath /ngx_pagespeed_message;
pagespeed ConsolePath /pagespeed_console;
pagespeed AdminPath /pagespeed_admin;
pagespeed GlobalAdminPath /pagespeed_global_admin;

# PageSpeed Cache Purge
pagespeed EnableCachePurge on;
pagespeed PurgeMethod PURGE;

pagespeed FileCachePath "/var/cache/pagespeed/"; 
pagespeed FileCacheSizeKb 102400; 
pagespeed FileCacheCleanIntervalMs 3600000; 
pagespeed FileCacheInodeLimit 500000;

# pagespeed filters configuration
pagespeed RewriteLevel PassThrough;

 

Dans notre exemple nous avons désactiver l’utilisation des filtres par défaut, je préfère les gérer / site. Nous reviendrons la dessus un peu plus tard. Maintenant créons un fichier spécifique à votre site

sudo nano /etc/nginx/common/pagespeed.conf

 

Ajoutons le code suivant

# PageSpeed Admin
location /ngx_pagespeed_statistics { include common/acl.conf; }
location /ngx_pagespeed_global_statistics { include common/acl.conf; }
location /ngx_pagespeed_message { include common/acl.conf; }
location /pagespeed_console { include common/acl.conf; }
location ~ ^/pagespeed_admin { include common/acl.conf; }
location ~ ^/pagespeed_global_admin { include common/acl.conf; }

# 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$" { }

 

Configurons maintenant les accès à vos statistiques

sudo nano /etc/nginx/common/acl.conf

 

Ici nous gérons les IP pouvant accéder à l’interface d’administration de PageSpeed

## Localhost + votre IP Distante
allow 127.0.0.1;
allow XXX.XXX.XXX.XXX
deny all;

## Accès ouvert à tous
## allow all;

 

 

Installation de PageSpeed sur votre site

Activation de PageSpeed

Ouvrez la configuration NGinx de votre site

sudo nano /etc/nginx/sites-available/votre-site.com

 

Collez la ligne suivante

include common/pagespeed.conf;

 

Configuration de PageSpeed

Toujours dans la configuration de votre vhost ajoutez les filtres que vous souhaitez utilisez, voilà l’une des configuration que je vous propose (les filtres sont par défaut désactivés).

# A dé-commentez si vous utilisez Cloudflare ou un loadbalancer 
#pagespeed RespectXForwardedProto on;

# HTTPS Support
# pagespeed FetchHttps enable;
## PageSpeed Filters
# Minification CSS
# pagespeed EnableFilters combine_css,rewrite_css;

# Minifcation Javascriot
# pagespeed EnableFilters combine_javascript,rewrite_javascript;

# Optimization des images
#pagespeed EnableFilters lazyload_images;
#pagespeed EnableFilters rewrite_images;
#pagespeed EnableFilters convert_jpeg_to_progressive,convert_png_to_jpeg,convert_jpeg_to_webp,convert_to_webp_lossless;

# Optimisation HTML - Supprime commentaires et espaces dans votre code 
#pagespeed EnableFilters remove_comments; 
#pagespeed EnableFilters collapse_whitespace;

# CDN Support
#pagespeed MapRewriteDomain cdn.example.com www.example.com;

 

Testons la configuration

sudo nginx -t

 

Si tout va bien nous pouvons recharger la configuration de NGInx

sudo service nginx reload

 

Sources