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.