GNU/Linux >> Tutoriels Linux >  >> Debian

Utilisation de ngx_pagespeed avec nginx sur Debian Jessie/testing

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.

  • 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".


Debian
  1. Comment construire nginx avec le module Google PageSpeed ​​sur Debian 8 (Jessie)

  2. Configuration de la réplication maître-maître avec MySQL sur Debian 8 (Jessie)

  3. Comment installer WebDAV avec Lighttpd sur Debian 8 (Jessie)

  4. Comment installer Nginx sur Debian 8 (Jessie)

  5. Comment installer MySQL v5.7 en utilisant apt-get sur Debian 8 Jessie

Comment installer Nextcloud 10 avec Nginx sur Debian 8

Comment configurer ModSecurity avec Nginx sur Debian/Ubuntu

Comment activer le protocole HTTP2 avec Nginx sur Debian 8 Jessie Server

Comment installer phpMyAdmin avec Nginx sur Debian 11 Bullseye

Comment installer phpMyAdmin avec Nginx sur Debian 11

Utilisation de la messagerie Web RoundCube avec ISPConfig 3 sur Debian Wheezy (nginx)