Nginx est un serveur Web puissant connu pour ses hautes performances et sa faible consommation de ressources. Conçu à l'origine pour gérer le problème C10k, il excelle dans la diffusion de contenu statique, l'équilibrage de charge et le proxy inverse. La combinaison de Nginx avec Debian, connu pour sa stabilité et sa sécurité, permet d'obtenir un environnement serveur robuste et fiable.
Principales caractéristiques de Nginx :
- Haute performance: Gère efficacement plusieurs connexions simultanées.
- Faible utilisation des ressources : Optimisé pour fonctionner avec un minimum de mémoire et de CPU.
- L'équilibrage de charge: Distribue le trafic sur plusieurs serveurs pour des performances améliorées.
- Proxy inverse : Transfère les demandes des clients vers les serveurs backend de manière transparente.
- Gestion du contenu statique : Sert les fichiers statiques rapidement et efficacement.
- Fonctions de sécurité: Prend en charge SSL/TLS pour les communications cryptées.
- La flexibilité: Prend en charge les protocoles tels que HTTP, HTTPS, SMTP, POP3 et IMAP.
Avantages de la combinaison de Nginx avec Debian :
- La stabilité: La réputation de stabilité de Debian garantit la fiabilité de votre serveur.
- Sécurité: Les mesures de sécurité robustes de Debian protègent votre serveur Nginx des vulnérabilités.
- Facilité d'utilisation: Le système de gestion des paquets de Debian simplifie l'installation et la maintenance de Nginx.
- Soutien communautaire : Nginx et Debian disposent de communautés solides fournissant des ressources et un support étendus.
Lors de la transition vers l'installation, vous constaterez que la stabilité de Debian s'associe parfaitement à l'efficacité de Nginx, créant un environnement idéal pour vos applications Web. Examinons les étapes requises pour installer et configurer Nginx sur un serveur Debian.
Préparation de votre système avant l'installation de Nginx
Assurez-vous que votre système est mis à jour avant d'installer Nginx. Cela évite les conflits potentiels lors de l'installation et réduit le risque de problèmes de compatibilité et de vulnérabilités de sécurité.
Pour mettre à jour vos packages système, exécutez ce qui suit :
sudo apt update && sudo apt upgrade
Cette commande récupère la liste des mises à jour disponibles (via apt update
), puis met à niveau les progiciels actuels vers leurs dernières versions (à l'aide de apt upgrade
).
Installer le standard du serveur Web de NGINX
Par défaut, NGINX est disponible dans les référentiels Debian. Cela rend le processus d’installation simple.
Exécutez la commande suivante pour installer nginx :
sudo apt install nginx
Le apt install
La commande indique à l'utilitaire de gestion des packages APT (qui fait partie du système Debian) d'installer le package NGINX.
Facultatif : installez la version NGINX-Full
NGINX propose un nginx-full
version avec des modules supplémentaires introuvables dans la version standard. Si vous avez besoin de plus de fonctionnalités, installez la version nginx-full :
sudo apt install nginx-full
Facultatif : installez la version NGINX-Extras
Pour un ensemble de fonctionnalités encore plus large, considérez le nginx-extras
version. À installer:
sudo apt install nginx-extras
Vérification de l'installation de NGINX
Après l'installation, assurez-vous que NGINX fonctionne correctement.
Vérifiez l'état du service NGINX avec les éléments suivants :
systemctl status nginx
NGINX fonctionne correctement si la sortie indique « actif (en cours d'exécution) ». Sinon, la sortie détaillera l’erreur pour le dépannage.
Si NGINX n'est pas activé, utilisez :
sudo systemctl enable nginx --now
Configurer le pare-feu UFW pour Nginx
UFW, ou Uncomplicated Firewall, fournit une interface facile à utiliser pour gérer les règles de pare-feu iptables. Il n'est pas installé par défaut sur Debian, mais vous pouvez l'obtenir à partir des référentiels par défaut. Si votre serveur dispose d'un accès public, vous devez configurer des règles de sécurité UFW.
Installer le pare-feu UFW
Si UFW n'est pas déjà installé sur votre système, vous pouvez le faire en exécutant la commande suivante :
sudo apt install ufw
Activer le pare-feu UFW
Une fois l'installation terminée, vous pouvez activer UFW en exécutant la commande suivante :
sudo ufw enable
Les paramètres par défaut d'UFW bloquent toutes les connexions entrantes et autorisent toutes les connexions sortantes. Cela signifie qu'il arrête l'accès non sollicité au système mais permet à votre système d'atteindre le monde extérieur.
Liste des applications installées
UFW utilise des profils d'application, qui sont des ensembles de règles pour des applications spécifiques. Pour voir les applications installées qui ont des profils UFW, exécutez :
sudo ufw app list
Configuration des règles UFW pour NGINX
En fonction de vos besoins, vous pouvez configurer UFW pour autoriser les connexions NGINX via HTTP (Port 80), HTTPS (Port 443) ou les deux.
Pour HTTP (Port 80) uniquement :
sudo ufw allow 'Nginx HTTP'
HTTPS (Port 443) uniquement :
sudo ufw allow 'Nginx HTTPS'
HTTP et HTTPS :
sudo ufw allow 'Nginx Full'
Vérification des règles de pare-feu
Pour confirmer que vos règles sont en place, vérifiez les règles de pare-feu actives :
sudo ufw status
Test de la configuration NGINX
Après avoir configuré UFW, assurez-vous de voir la page de destination de NGINX. Dans votre navigateur, accédez à l'adresse IP de votre serveur :
http://your_server_ip
Ou, pour les configurations locales :
http://localhost
Supposons que vous voyiez la page par défaut de NGINX ; votre configuration fonctionne. Cela met fin à la configuration du pare-feu pour NGINX sur Debian.
Créer des blocs de serveur NGINX
Comme les hôtes virtuels d'Apache, les blocs de serveur NGINX vous permettent d'héberger plusieurs domaines à partir d'un seul serveur. Chaque domaine a ses paramètres de configuration. Pour ce guide, remplacez « exemple.com » par votre nom de domaine réel.
Créez un répertoire pour votre domaine
Créez un répertoire pour votre domaine. Ce répertoire stockera les fichiers de votre site Web :
sudo mkdir -p /var/www/example.com/
Attribuer la propriété au répertoire Nginx
Attribuez la propriété du répertoire à l'utilisateur et au groupe « www-data », que NGINX utilise habituellement :
sudo chown -R www-data:www-data /var/www/example.com/
Créer une page HTML de test Nginx
Créez une page HTML de test dans le répertoire de votre domaine pour confirmer votre configuration NGINX :
sudo nano /var/www/example.com/index.html
Ajoutez le code HTML suivant :
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Success! The NGINX server block is working!</h1>
</body>
</html>
Après avoir collé le code dans l'éditeur nano, appuyez sur CTRL+O pour enregistrer les modifications, puis sur CTRL+X pour quitter l'éditeur.
Créer un bloc de serveur NGINX pour la page de test
Configurez un bloc de serveur pour votre site Web :
sudo nano /etc/nginx/sites-available/example.com.conf
Ajoutez la configuration suivante :
server {
listen 80;
listen [::]:80;
root /var/www/example.com/;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Cette configuration indique à NGINX d'écouter les connexions entrantes sur le port 80 pour les deux example.com
et www.example.com
. Assurez-vous de remplacer le root
directive avec le chemin du répertoire que vous avez créé précédemment.
Activer le bloc serveur NGINX via un lien symbolique
Activez le blocage de votre serveur en créant un lien symbolique du répertoire sites-available vers le répertoire sites-enabled :
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Configuration finale et test
Enfin, nous modifierons le fichier de configuration NGINX par défaut et effectuerons un test pour nous assurer que tout fonctionne comme prévu.
Modification du fichier de configuration NGINX
Ouvrez le nginx.conf
déposer:
sudo nano /etc/nginx/nginx.conf
Cherchez la ligne server_names_hash_bucket_size 64;
au sein du http {}
bloquez-le et décommentez-le.
Cette directive permet à NGINX de gérer des noms de domaine longs et un nombre plus important de noms de serveurs en allouant plus de mémoire à cet effet. Toutefois, veillez à ne pas définir cette valeur trop élevée, car elle pourrait consommer plus de mémoire que nécessaire.
Enregistrez les modifications et quittez l'éditeur en appuyant sur CTRL+O et CTRL+X.
Testez votre configuration NGINX
Avant de continuer et de redémarrer NGINX, c'est une bonne pratique de vérifier que votre syntaxe de configuration est correcte. Exécutez la commande suivante pour lancer un test :
sudo nginx -t
Si votre configuration est correcte, vous verrez cette sortie :
nginx : la syntaxe du fichier de configuration /etc/nginx/nginx.conf est correcte nginx : le test du fichier de configuration /etc/nginx/nginx.conf est réussi
Ces messages indiquent que votre configuration NGINX a été validée avec succès.
Vérification de votre blocage de serveur
Pour garantir que votre blocage de serveur fonctionne correctement, ouvrez votre domaine dans un navigateur Web. Vous devriez voir la page de test confirmant que le blocage de votre serveur est actif.
Commandes Nginx supplémentaires
Améliorer la sécurité des fichiers sur votre serveur Web
La sécurité des fichiers et dossiers sur votre serveur Web est primordiale. Évitez les droits d’accès trop permissifs. Utilisez ces commandes pour définir les autorisations correctes pour tous les fichiers et répertoires de votre racine Web.
N'oubliez pas de remplacer /var/www/example.com/
avec votre chemin webroot :
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
Ces commandes définissent les autorisations de lecture et d'exécution pour les répertoires et les autorisations de lecture-écriture pour les fichiers pour le propriétaire. Les groupes et autres bénéficient d'un accès en lecture seule. Ajustez ces autorisations selon les exigences de votre application.
Sécurité Nginx avec le certificat SSL gratuit Let's Encrypt
L'utilisation du protocole HTTPS garantit la sécurité du serveur Web. Let's Encrypt fournit un certificat SSL gratuit. Installez le package certbot avec :
sudo apt install python3-certbot-nginx
Ensuite, lancez la création du certificat :
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Remplacez par votre e-mail et votre nom de domaine. Cette commande configure HTTPS avec les fonctionnalités de sécurité requises.
Configuration du renouvellement automatique des certificats
Les certificats Let's Encrypt durent 90 jours. Configurez des renouvellements automatiques avec le script Certbot. Testez le processus :
sudo certbot renew --dry-run
En cas de succès, ajoutez la commande de renouvellement à crontab :
sudo crontab -e
Incluez cette ligne pour renouveler quotidiennement à minuit :
00 00 */1 * * /usr/sbin/certbot-auto renew
Journaux du serveur Nginx
Surveillez les journaux de votre serveur pour un serveur Web bien entretenu. Par défaut, les journaux résident dans /var/log/nginx
. Listez-les avec :
cd /var/log/nginx && ls -l
Les fichiers journaux les plus pertinents sont les access.log
et error.log
. Pour surveiller les journaux en temps réel, utilisez le tail -f
commande suivie du chemin d'accès au journal :
tail -f /var/log/nginx/access.log
Mettre à jour Nginx
Avant de mettre à jour votre serveur Nginx, il est judicieux de créer une sauvegarde de vos configurations actuelles. Pour sauvegarder votre principal nginx.conf
fichier, utilisez la commande suivante :
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Dans les cas où vous avez largement personnalisé votre configuration Nginx, vous souhaiterez peut-être sauvegarder l'intégralité de votre répertoire Nginx :
sudo cp -r /etc/nginx/ /etc/nginx-bkup
Une fois vos configurations sauvegardées en toute sécurité, vous pouvez maintenant procéder à la mise à jour de Nginx :
sudo apt update
sudo apt upgrade
Sauvegarder régulièrement vos configurations est une bonne pratique, en particulier dans les configurations complexes.
Supprimer Nginx
Si vous n'avez plus besoin de Nginx sur votre serveur, vous pouvez le supprimer en suivant ces étapes. Tout d’abord, assurez-vous que le service Nginx est arrêté :
sudo systemctl disable nginx --now
Ensuite, supprimez complètement le package Nginx :
sudo apt remove nginx
Vous pouvez encore trouver des restes de configurations Nginx dans le /etc/nginx
annuaire. Pour les supprimer, utilisez la commande :
sudo rm -R /etc/nginx/
N'oubliez pas que cela supprimera tous vos fichiers de configuration personnalisés, alors assurez-vous d'avoir sauvegardé tout ce dont vous avez besoin avant de passer à cette étape.
Configurer les paramètres de rotation des journaux dans Nginx
Nginx inclut par défaut une fonctionnalité de rotation quotidienne des journaux. Cependant, vous pouvez personnaliser ces paramètres en fonction de vos besoins.
Accéder au fichier de configuration pour la rotation des journaux
Pour modifier les paramètres de rotation des journaux, vous devez accéder au fichier de configuration. Voici comment l'ouvrir à l'aide de l'éditeur de texte nano :
sudo nano /etc/nginx/logrotate.d/nginx
Une fois le fichier ouvert, vous verrez un contenu ressemblant à celui-ci. Ajustez les directives de ce fichier pour répondre à vos besoins de conservation et de rotation des journaux, principalement si vous utilisez des outils de surveillance comme fail2ban.
Exemple de fichier de configuration de rotation des journaux
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Comprendre les paramètres de configuration principaux
Dans cette configuration, les administrateurs système se concentrent généralement sur deux paramètres principaux :
- Tous les jours: Ce paramètre définit la fréquence de rotation du journal. Bien que la valeur par défaut soit « quotidiennement », vous pouvez la modifier en « hebdomadaire » ou « mensuellement ». Cependant, les rotations quotidiennes simplifient généralement la gestion des journaux.
- Rotation 14: Ce numéro indique au système combien de fichiers journaux conserver. Par exemple, un paramètre de « 14 » conserve les 14 derniers journaux. Si vous souhaitez stocker seulement une semaine de journaux, ajustez ce nombre à « 7 ».
Bien que Nginx vous permette de modifier d'autres paramètres, effectuez toujours les modifications avec soin. Modifier les paramètres sans comprendre leur impact peut entraîner des résultats inattendus. Assurez-vous de modifier ces paramètres en fonction de vos besoins sans provoquer de problèmes involontaires.
N'oubliez pas qu'il n'existe pas d'approche unique en matière de gestion des journaux. Évaluez toujours votre environnement et vos exigences spécifiques avant d’apporter des modifications.
Pensées finales
Dans ce guide, nous avons expliqué la configuration de Nginx sur Debian, couvrant l'installation, la configuration et l'optimisation de base. En combinant l'efficacité de Nginx avec la stabilité de Debian, vous avez créé une base solide pour votre serveur Web. N'oubliez pas de garder votre serveur à jour et d'explorer des modules Nginx supplémentaires pour des fonctionnalités améliorées. Si vous rencontrez des problèmes, les communautés fortes autour de Debian et Nginx sont toujours d'excellentes ressources. Merci d'avoir suivi et bon hébergement !