Nginx est un serveur Web gratuit et open source, sans parler de l'un des serveurs Web les plus utilisés au monde. Il peut être utilisé comme proxy inverse, proxy de messagerie, équilibreur de charge et serveur de mise en cache. Nginx est hautement évolutif et spécialement conçu pour des performances et une stabilité maximales. Il utilise une architecture pilotée par les événements et gère chaque requête entrante dans un seul thread.
Nginx est livré avec un module FastCGI qui peut être utilisé pour mettre en cache le contenu dynamique servi à partir du backend PHP. Vous n'avez pas besoin de configurer d'autres solutions de mise en cache telles que Redis, Varnish, Memcache après avoir configuré Nginx avec le cache FastCGI.
Dans ce tutoriel, nous allons vous montrer comment configurer le cache Nginx FastCGI avec LEMP sur Ubuntu 18.04.
Prérequis
- Un nouveau VPS Ubuntu 18.04 sur la plate-forme cloud Atlantic.Net
- Un mot de passe root configuré sur votre serveur
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur, en choisissant Ubuntu 18.04 comme système d'exploitation, avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois connecté à votre serveur Ubuntu 18.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Installer le serveur LEMP
Commençons par installer LEMP (Nginx, PHP, PHP-FPM) sur votre serveur.
apt-get install nginx php php-cli php-fpm -y
La commande ci-dessus installera également le serveur Web Apache sur votre système, vous devrez donc arrêter et désactiver le service Apache.
systemctl stop apache2 systemctl disable apache2
Ensuite, démarrez le service Nginx et PHP-FPM avec la commande suivante :
systemctl start nginx systemctl start php7.2-fpm
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Étape 3 – Créer un exemple de site Web
Tout d'abord, créez un répertoire pour votre site Web avec la commande suivante :
mkdir /var/www/html/example.com
Ensuite, créez un exemple de fichier info.php dans le répertoire de votre site Web :
nano /var/www/html/example.com/info.php
Ajoutez les lignes suivantes :
<?php phpinfo(); ?>
Enregistrez et fermez le fichier. Ensuite, changez la propriété de votre site Web en www-data user :
chown -R www-data:www-data /var/www/html/example.com chmod -R 755 /var/www/html/example.com
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Étape 4 - Configurer Nginx avec le cache FastCGI
Ensuite, vous devrez créer un nouveau fichier de configuration d'hôte virtuel Nginx pour servir votre site Web et activer le cache FastCGI.
nano /etc/nginx/sites-available/example.com.conf
Ajoutez les lignes suivantes :
# Enable FastCGI Support fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=nginxcache:150m max_size=1g inactive=60m use_temp_path=off; fastcgi_cache_key "$scheme$request_method$host$request_uri"; add_header X-Cache $upstream_cache_status; server { listen 80; root /var/www/html/example.com; client_max_body_size 256M; index info.php; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location = /favicon.ico { access_log off; log_not_found off; } #Disable caching for login session, user cookie, POST request, query string, site map and feeds set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Enable caching for your website. location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index info.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors off; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; fastcgi_cache nginxcache; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; } }
Enregistrez et fermez le fichier lorsque vous avez terminé, puis vérifiez Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Vous devriez obtenir le résultat suivant :
Ensuite, activez le fichier d'hôte virtuel Nginx avec la commande suivante :
ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Enfin, rechargez le service Nginx pour appliquer les modifications :
systemctl restart nginx
Une brève explication de chaque directive dans le fichier de configuration ci-dessus est présentée ci-dessous :
- fastcgi_cache_path crée un cache FastCGI et spécifie l'emplacement du cache, le nom de la zone mémoire (nginxcache) avec la taille (150M), max_size (1G) et définit la clé pour la recherche du cache.
- add_header est utilisé pour valider si la requête a été servie à partir du cache FastCGI ou non.
- fastcgi spécifie le chemin du socket php-fpm.
- fastcgi_cache active la mise en cache, que nous avons spécifiée à l'aide de la zone mémoire dans la directive fastcgi_cache_path.
- fastcgi_cache_valid définit le temps de cache avec le code d'état 200, 301, 302 sera mis en cache pendant 60 minutes.
- fastcgi_cache_lock n'autorise que la première requête via le serveur PHP-FPM en amont.
Étape 5 - Tester le cache Nginx FastCGI
À ce stade, Nginx est installé et configuré avec la prise en charge de FastCGI Cache. Il est temps de vérifier si la mise en cache fonctionne ou non.
Ouvrez votre navigateur Web, accédez à votre serveur Web Nginx à l'aide de l'URL http://example.com et rechargez la page plusieurs fois.
Ensuite, ouvrez votre terminal et exécutez la commande suivante pour récupérer l'en-tête de réponse http.
curl -I http://example.com
Vous devriez obtenir le résultat suivant :
HTTP/1.1 200 OK Server: nginx/1.14.0 (Ubuntu) Date: Fri, 24 Apr 2020 16:07:24 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Cache: HIT
À partir de la sortie ci-dessus, X-Cache :HIT indique que la réponse a été servie à partir du cache.
Conclusion
Toutes nos félicitations! Vous avez configuré avec succès Nginx avec la prise en charge de FastCGI Cache. Après avoir activé la mise en cache, vous devriez remarquer une énorme amélioration des performances car les pages sont chargées sans avoir à être rendues par PHP. Essayez FastCGI Cache sur Nginx dès aujourd'hui avec le service d'hébergement VPS d'Atlantic.Net.