13. Configuration des blocs serveur Nginx
13.1. Comprendre les blocs serveur Nginx
Section intitulée « 13.1. Comprendre les blocs serveur Nginx »Les blocs serveur Nginx (similaires aux hôtes virtuels d’Apache) vous permettent d’héberger plusieurs sites web sur un seul serveur. Chaque site web peut avoir sa propre configuration, son propre répertoire racine et son propre nom de domaine.
13.2. Anatomie d’un bloc serveur
Section intitulée « 13.2. Anatomie d’un bloc serveur »Un bloc serveur est défini dans la directive server { } des fichiers de configuration Nginx. Décortiquons les composants d’un bloc serveur en le construisant étape par étape :
13.2.1. Structure de base d’un bloc serveur
Section intitulée « 13.2.1. Structure de base d’un bloc serveur »Le bloc serveur le plus basique est simplement un bloc vide :
server { # Les directives de configuration vont ici}13.2.2. Ajout d’un port d’écoute
Section intitulée « 13.2.2. Ajout d’un port d’écoute »Ensuite, nous spécifions sur quel port Nginx doit écouter (généralement le port 80 pour HTTP) :
server { listen 80; # Plus de directives de configuration}13.2.3. Définition du nom de serveur
Section intitulée « 13.2.3. Définition du nom de serveur »La directive server_name indique à Nginx quels noms de domaine doivent être gérés par ce bloc serveur :
server { listen 80; server_name example.com www.example.com; # Plus de directives de configuration}13.2.4. Spécification du répertoire racine
Section intitulée « 13.2.4. Spécification du répertoire racine »La directive root définit l’emplacement des fichiers du site web :
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; # Plus de directives de configuration}13.2.5. Définition du fichier d’index par défaut
Section intitulée « 13.2.5. Définition du fichier d’index par défaut »La directive index spécifie quel fichier doit être servi lorsqu’un répertoire est demandé :
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; index index.php index.html index.htm; # Plus de directives de configuration}13.2.6. Configuration du traitement des URL
Section intitulée « 13.2.6. Configuration du traitement des URL »Le bloc location / avec la directive try_files est crucial pour que WordPress gère les permaliens personnalisés :
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; index index.php index.html index.htm;
location / { try_files $uri $uri/ /index.php$is_args$args; } # Plus de directives de configuration}13.2.7. Traitement des fichiers PHP
Section intitulée « 13.2.7. Traitement des fichiers PHP »Enfin, nous ajoutons un bloc location pour gérer les fichiers PHP et les transmettre à PHP-FPM :
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; index index.php index.html index.htm;
location / { try_files $uri $uri/ /index.php$is_args$args; }
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; }}13.3. Amélioration des blocs serveur avec des optimisations de performance
Section intitulée « 13.3. Amélioration des blocs serveur avec des optimisations de performance »Un bloc serveur basique fonctionne bien, mais nous pouvons l’améliorer avec des optimisations de performance comme la journalisation, la mise en cache du navigateur et le réglage FastCGI.
13.3.1. Ajout de la configuration de journalisation
Section intitulée « 13.3.1. Ajout de la configuration de journalisation »Pour une meilleure surveillance et un meilleur dépannage, ajoutez des journaux d’accès et d’erreur personnalisés pour chaque site :
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; index index.php index.html index.htm;
location / { try_files $uri $uri/ /index.php$is_args$args; }
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; }
# Configuration de journalisation personnalisée access_log /var/log/nginx/access_example.com.log combined buffer=256k flush=60m; error_log /var/log/nginx/error_example.com.log;}Les paramètres buffer et flush optimisent les performances d’écriture des journaux en mettant les entrées en tampon en mémoire et en les écrivant périodiquement sur le disque.
13.3.2. Mise en place de la mise en cache du navigateur
Section intitulée « 13.3.2. Mise en place de la mise en cache du navigateur »La mise en cache du navigateur améliore significativement les performances du site web en indiquant aux navigateurs de stocker les ressources statiques localement. Créez un fichier de configuration réutilisable pour la mise en cache du navigateur :
# Créer un répertoire pour les includes s'il n'existe passudo mkdir -p /etc/nginx/includes/
# Créer le fichier de configuration de mise en cache du navigateursudo vim /etc/nginx/includes/browser_caching.confAjoutez le contenu suivant au fichier :
# Mettre en cache les images et fichiers multimédias pendant 1 anlocation ~* \.(webp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ { expires 365d; add_header Cache-Control "public, no-transform"; access_log off;}
# Mettre en cache les fichiers JavaScript pendant 30 jourslocation ~* \.(js)$ { expires 30d; add_header Cache-Control "public, no-transform"; access_log off;}
# Mettre en cache les fichiers CSS pendant 30 jourslocation ~* \.(css)$ { expires 30d; add_header Cache-Control "public, no-transform"; access_log off;}
# Mettre en cache les polices web pendant 30 jourslocation ~* \.(eot|svg|ttf|woff|woff2)$ { expires 30d; add_header Cache-Control "public, no-transform"; access_log off;}13.3.3. Optimisation des paramètres FastCGI
Section intitulée « 13.3.3. Optimisation des paramètres FastCGI »FastCGI est le protocole utilisé pour communiquer entre Nginx et PHP-FPM. L’optimisation de ces paramètres peut améliorer les performances :
# Créer le fichier de configuration d'optimisation FastCGIsudo vim /etc/nginx/includes/fastcgi_optimize.confAjoutez le contenu suivant au fichier :
# Paramètres de délai de connexionfastcgi_connect_timeout 60;fastcgi_send_timeout 180;fastcgi_read_timeout 180;
# Paramètres de tampon pour le traitement des réponsesfastcgi_buffer_size 512k;fastcgi_buffers 512 16k;fastcgi_busy_buffers_size 1m;fastcgi_temp_file_write_size 4m;fastcgi_max_temp_file_size 4m;
# Gestion des erreursfastcgi_intercept_errors on;13.4. Création d’une configuration complète de bloc serveur
Section intitulée « 13.4. Création d’une configuration complète de bloc serveur »Maintenant, rassemblons tout pour créer une configuration complète de bloc serveur pour un site WordPress :
# Créer un nouveau fichier de configuration de bloc serveursudo vim /etc/nginx/sites-available/example.com.confAjoutez la configuration complète suivante :
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public_html; index index.php;
# Permaliens personnalisés WordPress location / { try_files $uri $uri/ /index.php$is_args$args; }
# Traitement PHP avec paramètres FastCGI optimisés location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; include /etc/nginx/includes/fastcgi_optimize.conf; }
# Inclure les règles de mise en cache du navigateur include /etc/nginx/includes/browser_caching.conf;
# Journalisation personnalisée access_log /var/log/nginx/access_example.com.log combined buffer=256k flush=60m; error_log /var/log/nginx/error_example.com.log;}13.5. Activation du bloc serveur
Section intitulée « 13.5. Activation du bloc serveur »Après avoir créé la configuration du bloc serveur, vous devez l’activer en créant un lien symbolique dans le répertoire sites-enabled :
# Vérifier les sites existantscd /etc/nginx/ls sites-available/ sites-enabled/
# Créer un lien symbolique pour activer le sitesudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
# Vérifier que le lien a été crééls -l sites-enabled/13.6. Test et application de la configuration
Section intitulée « 13.6. Test et application de la configuration »Avant de recharger Nginx, il est important de tester la configuration pour s’assurer qu’il n’y a pas d’erreurs de syntaxe :
# Tester la configuration Nginxsudo nginx -tSi le test est réussi, rechargez Nginx pour appliquer les modifications :
# Recharger Nginxsudo systemctl reload nginx13.7. Préparation du répertoire racine web
Section intitulée « 13.7. Préparation du répertoire racine web »Enfin, assurez-vous que le répertoire racine web existe et a les permissions correctes :
# Créer le répertoire racine web s'il n'existe passudo mkdir -p /var/www/example.com/public_html
# Définir la propriété correcte (ajustez le nom d'utilisateur si nécessaire)sudo chown -R www-data:www-data /var/www/example.com/public_html
# Définir les permissions correctessudo chmod -R 755 /var/www/example.com/public_html
# Vérifier le répertoirels -la /var/www/example.com/public_html/Avec ces étapes terminées, votre serveur Nginx est maintenant configuré pour servir votre site WordPress. Dans la section suivante, nous verrons comment installer WordPress dans cet environnement préparé.