Pour accélérer le chargement d’un site Web hébergé sous Nginx sur un serveur Ubuntu, plusieurs optimisations peuvent être mises en place. Voici un guide détaillé pour améliorer les performances de votre serveur Web :
1. Optimisation du serveur Nginx
a. Activer la compression Gzip
La compression Gzip permet de réduire la taille des fichiers envoyés par le serveur, ce qui accélère leur téléchargement.
Dans le fichier de configuration Nginx (généralement situé dans /etc/nginx/nginx.conf
), activez Gzip avec ces options :
gzip on; gzip_vary on; gzip_min_length 256; gzip_proxied any; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
b. Mettre en cache les fichiers statiques
En ajoutant des en-têtes de cache, vous permettez aux navigateurs de stocker localement certains fichiers pour éviter de les télécharger à chaque visite.
Dans la configuration de votre site Nginx, ajoutez les lignes suivantes pour configurer le cache pour les fichiers statiques :
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public"; }
Cela permet aux fichiers d’être mis en cache pendant 30 jours.
2. Optimisation des paramètres Nginx
a. Optimiser les workers
Adaptez le nombre de workers au nombre de CPU disponibles sur votre serveur.
Dans le fichier nginx.conf
, ajustez ces lignes :
worker_processes auto;
worker_connections 1024;
Le nombre de workers sera défini automatiquement en fonction des ressources disponibles.
b. Augmenter la taille du buffer client
Cela permet de gérer des requêtes volumineuses sans saturer les ressources.
client_body_buffer_size 10K;
client_max_body_size 8m;
client_header_buffer_size 1k;
large_client_header_buffers 2 1k;
3. Configurer le cache de reverse proxy
Si vous utilisez Nginx comme proxy inverse, vous pouvez mettre en cache les réponses pour accélérer les requêtes récurrentes :
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
Ajoutez ensuite dans vos règles de location :
location / { proxy_cache my_cache; proxy_pass http://backend;
}
4. Optimisation du serveur Ubuntu
a. Mettre à jour le système
Assurez-vous que votre système Ubuntu et tous ses paquets sont à jour :
sudo apt update && sudo apt upgrade
b. Installer des paquets essentiels pour les performances
Installez PageSpeed (module Google), ou Brotli (alternative de compression plus récente que Gzip), pour améliorer la performance de votre serveur.
- PageSpeed peut être intégré à Nginx via un module externe.
- Brotli peut être installé avec :
sudo apt install brotli
Puis activez-le dans Nginx en configurant la compression :
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json application/xml+rss;
c. Désactiver les services inutiles
Utilisez la commande suivante pour lister les services qui démarrent avec le système et désactiver ceux qui ne sont pas nécessaires :
sudo systemctl list-unit-files --type=service
Puis désactivez un service avec :
sudo systemctl disable nom_du_service
5. Optimisation des bases de données
Si votre site utilise une base de données (comme MySQL ou PostgreSQL), assurez-vous qu’elle est optimisée. Quelques points à vérifier :
- Utilisez l’indexation pour les tables fréquemment consultées.
- Limitez le nombre de requêtes volumineuses simultanées.
- Activez la mise en cache des requêtes avec un système comme Redis ou Memcached.
6. Utilisation d’un CDN (Content Delivery Network)
Un CDN (comme Cloudflare ou AWS CloudFront) permet de distribuer vos fichiers statiques (images, CSS, JS) à travers des serveurs proches de l’utilisateur final, ce qui réduit le temps de latence.
7. Utiliser HTTP/2
HTTP/2 permet une meilleure gestion des connexions et accélère le chargement des ressources. Il est pris en charge nativement par Nginx. Activez-le en ajoutant http2
dans votre configuration de serveur SSL :
server {
listen 443 ssl http2;
server_name exemple.com;
...
}
8. Réduire le nombre de requêtes HTTP
- Combinez les fichiers CSS et JavaScript.
- Utilisez la technique de lazy loading pour les images (chargement à la demande).
- Minifiez vos fichiers CSS et JS pour en réduire la taille.
9. Utilisation de systèmes de cache côté serveur
Intégrez un système de mise en cache comme Varnish ou Redis pour les pages dynamiques. Redis peut être utilisé pour stocker les sessions et mettre en cache les résultats de base de données, ce qui accélère grandement les performances.
Conclusion
En suivant ces bonnes pratiques, vous devriez observer une nette amélioration des performances de votre site Web sous Nginx et Ubuntu. Ces optimisations concernent à la fois le serveur, la gestion des fichiers statiques, la base de données et l’infrastructure réseau.