Recherche de site Web

Accélérez les performances de Nginx avec Ngx_Pagespeed sur CentOS 7


Nginx [engine x] est un serveur Web et un logiciel de proxy inverse gratuit et open source, multiplateforme et puissant, écrit en C. Il s'agit également d'un serveur proxy IMAP/POP3 et TCP/UDP standard, et peut être utilisé comme équilibreur de charge.

Nginx est un serveur HTTP bien connu (comparable au serveur HTTP Apache) qui alimente de nombreux sites sur le Web ; il est apprécié pour ses performances et sa stabilité.

Il existe plusieurs facteurs importants à prendre en compte lorsque vous souhaitez améliorer l'expérience utilisateur sur votre site, notamment la vitesse du site et la vitesse des pages (également appelée temps de chargement des pages). Si votre site est alimenté par Nginx, vous pouvez utiliser ngx_pagespeed à cette fin.

Lecture suggérée : Installez Mod_Pagespeed pour améliorer les performances du serveur Apache

Ngx_pagespeed est un module Nginx gratuit et open source utilisé pour améliorer la vitesse des sites ainsi que pour réduire le temps de chargement des pages. Cela réduit considérablement le temps nécessaire aux utilisateurs pour voir et interagir avec le contenu de votre site.

Caractéristiques de Ngx_pagespeed :

  • Prise en charge du contrôle HTTPS et URL.
  • Optimisation d'image : suppression des métadonnées, redimensionnement dynamique, recompression.
  • Minification, concaténation, inlining et outline CSS et JavaScript.
  • Petite ressource en ligne.
  • Différer le chargement de l’image et du JavaScript.
  • Réécriture HTML.
  • Extension de la durée de vie du cache.
  • Permet la configuration de plusieurs serveurs et bien d’autres.

Dans ce tutoriel, nous allons montrer comment installer Nginx avec ngx_pagespeed et tester l'ensemble de l'installation sur RHEL/CentOS 7.

Attention : les utilisateurs Debian et Ubuntu peuvent suivre ce guide pour installer Ngx_Pagespeed afin d'améliorer les performances de Nginx.

Étape 1 : Installer Nginx à partir de la source

1. Pour installer Nginx avec ngx_pagespeed, vous devez le compiler à partir des sources. Installez d'abord tous les packages requis pour compiler Nginx à partir des sources comme celle-ci.

yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel
OR
yum group install "Development Tools"

2. Ensuite, obtenez les fichiers sources de la dernière version de Nginx (1.13.2 au moment d'écrire ces lignes) à l'aide de la commande wget et extrayez la boule tar téléchargée comme ci-dessous. .

mkdir ~/downloads
cd ~/downloads
wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
tar -xzvf nginx-1.13.2.tar.gz

3. Ensuite, téléchargez les fichiers sources ngx_pagespeed et décompressez les fichiers compressés.

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip

4. Accédez maintenant au répertoire ngx_pagespeed décompressé et demandez aux bibliothèques d'optimisation PageSpeed de compiler Nginx comme suit.

cd ngx_pagespeed-1.12.34.2-stable/
wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz

Étape 2 : configurer et compiler Nginx avec Ngx_Pagespeed

5. Allez maintenant dans le répertoire nginx-1.13.2 et configurez la source Nginx en exécutant les commandes ci-dessous.

cd ~/downloads/nginx-1.13.2
./configure --add-module=$HOME/downloads/ngx_pagespeed-1.12.34.2-stable/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS}

6. Ensuite, compilez et installez Nginx comme suit.

make
make install

7. Une fois le processus d'installation terminé, créez tous les liens symboliques nécessaires pour Nginx.

ln -s /usr/local/nginx/conf/ /etc/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

Étape 3 : Création d'un fichier d'unité Nginx pour SystemD

8. Ensuite, puisque systemd est le système init dans CentOS 7, vous devez créer manuellement l'unité Nginx. déposer pour cela.

Tout d'abord, créez le fichier /lib/systemd/system/nginx.service, puis récupérez le fichier de service NGINX systemd et collez la configuration du fichier d'unité dans le fichier ci-dessous.

vi /lib/systemd/system/nginx.service

Prenez note de l'emplacement du PIDFile et du binaire NGINX que vous avez défini lors de la configuration et de la compilation de Nginx, vous les définirez dans les variables appropriées dans le fichier unité comme indiqué ci-dessous :

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Enregistrez le fichier et fermez-le.

9. À ce stade, démarrez le service nginx pour le moment et activez-le pour démarrer au démarrage du système en exécutant les commandes ci-dessous.

systemctl start nginx
systemctl enable nginx
systemctl status nginx

Étape 4 : Configurer Nginx avec le module Pagespeed

10. Une fois Nginx installé, vous devez ensuite activer le module Ngx_pagespeed. Commencez par créer un répertoire dans lequel le module mettra en cache les fichiers de votre site Web et définirez les autorisations appropriées sur ce répertoire avec les commandes ci-dessous.

mkdir -p /var/ngx_pagespeed_cache
chown -R nobody:nobody /var/ngx_pagespeed_cache

11. Il est maintenant temps d'activer le module Ngx_pagespeed, d'ouvrir le fichier de configuration Nginx et d'ajouter les lignes ci-dessous.

Important : si vous avez configuré des hôtes virtuels nginx sur le serveur, ajoutez les directives pagespeed ci-dessus à chaque bloc de serveur pour activer Ngx_pagespeed sur chaque site.

vi /etc/nginx/nginx.conf

Ajoutez les lignes de configuration Ngx_pagespeed suivantes dans le bloc serveur.

Pagespeed main settings

pagespeed on;
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 ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }

Ce qui suit est un exemple fonctionnel du fichier de configuration Nginx avec Ngx_pagespeed activé dans l'hôte virtuel par défaut.

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
        listen       80;
        server_name  localhost; 
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        # Pagespeed main settings
        pagespeed on;
        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 ~ "^/ngx_pagespeed_static/" { }
        location ~ "^/ngx_pagespeed_beacon" { }

        location / {
            root   html;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

12. Ensuite, assurez-vous que le fichier de configuration Nginx est sans erreur en exécutant la commande ci-dessous, vous verrez le résultat ci-dessous si tout va bien.

nginx -t

13. Enfin, redémarrez le serveur Nginx pour que les modifications prennent effet.

systemctl restart nginx

Étape 5 : tester Nginx avec Ngx_pagespeed

14. Pour savoir si Ngx_pagespeed fonctionne désormais en conjonction avec Nginx, il doit apparaître dans l'en-tête X-Page-Speed.

curl -I -p http://localhost

Si vous n'avez pas vu l'en-tête ci-dessus, revenez à l'étape 11 et suivez attentivement les instructions pour activer Ngx-pagespeed avec les étapes suivantes.

Dépôt Github Ngx-pagespeed : https://github.com/pagespeed/ngx_pagespeed

C'est tout! Dans ce tutoriel, nous avons montré comment installer et configurer Nginx avec le module Ngx_pagespeed pour optimiser et améliorer les performances du site et réduire le temps de chargement des pages.

Pour sécuriser le serveur Web Nginx, lisez cet article – Le guide ultime pour sécuriser, renforcer et améliorer les performances du serveur Web Nginx.

Comme toujours, n'hésitez pas à nous faire part de vos questions ou réflexions concernant ce tutoriel.