NGINX est un logiciel serveur HTTP open-source et gratuit. En plus de ses capacités de serveur HTTP, NGINX peut également fonctionner comme un serveur proxy pour le courrier électronique (IMAP, POP3 et SMTP) et un proxy inverse et un équilibreur de charge pour les serveurs HTTP, TCP et UDP. L'objectif derrière NGINX était de créer le serveur Web le plus rapide du marché, et le maintien de cette excellence est toujours un objectif central du projet Nginx. NGINX bat constamment Apache et d'autres serveurs dans les benchmarks mesurant les performances des serveurs Web et est désormais le serveur Web le plus utilisé selon W3Tech.
Dans le tutoriel suivant, vous apprendrez à installer Nginx sur Ubuntu 20.04 LTS en utilisant le référentiel Ubuntu par défaut ou l'alternative PPA par Ondřej Surý avec un certificat TLS/SSL gratuit de Let's Encrypt.
Prérequis
- OS recommandé : Ubuntu 20.04 ou supérieur
- Compte utilisateur : Un compte utilisateur avec un accès sudo ou root.
Mise à jour du système d'exploitation
Mettez à jour votre Ubuntu système d'exploitation pour s'assurer que tous les packages existants sont à jour :
sudo apt update && sudo apt upgrade
Accès racine ou sudo
Par défaut, le compte créé avec Ubuntu donnait le statut sudo. Néanmoins, supposons que vous deviez fournir un accès sudo/root à des comptes supplémentaires. Dans ce cas, vous devez soit avoir accès au mot de passe root utiliser la commande su ou visitez notre tutoriel sur Comment ajouter un utilisateur à Sudoers sur Ubuntu.
Installer Nginx
Méthode 1. Installer Nginx Stable à partir du référentiel Ubuntu
La première méthode consiste à installer Nginx à partir des référentiels par défaut d'Ubuntu, et ces versions se sont avérées stables et sécurisées. Si vous devez exécuter un serveur Web principal ou un proxy inverse, l'installation des packages du référentiel Ubuntu est souvent recommandée.
Pour installer Nginx, exécutez la commande suivante.
sudo apt install nginx
Exemple de résultat :
Tapez "O," puis appuyez sur la « TOUCHE ENTRÉE » pour poursuivre l'installation.
Ensuite, vérifiez la version de build et si l'installation a réussi.
sudo nginx -v
Exemple de résultat :
nginx version: nginx/1.18.0
Méthode 2. Installer la dernière écurie ou ligne principale Nginx d'Ondřej Surý PPA
Alternativement, au lieu d'installer la version stable Nginx par défaut à partir du référentiel d'Ubuntu 20.04, vous pouvez installer Nginx Stable ou Mainline à l'aide du PPA d'Ondřej Surý, le responsable PHP pour Debian.
Installez l'un des PPA suivants avec la commande suivante :
Installez la dernière version de Nginx (STABLE) :
sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update
Installez la dernière version de Nginx (MAINLINE) :
sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update
Maintenant que vous avez installé le PPA et mis à jour la liste des référentiels, installez Nginx avec ce qui suit :
sudo apt install nginx-core nginx-common nginx nginx-full
Exemple de résultat :
Tapez "O," puis appuyez sur la « TOUCHE ENTRÉE » pour poursuivre l'installation.
Ensuite, vérifiez la version de build et si l'installation a réussi.
sudo nginx -v
Exemple de sortie (de Mainline) :
nginx version: nginx/1.18.0
Vérifiez maintenant que le dernier Nginx du référentiel Ondřej Surý a été installé à l'aide de la commande apt-cache policy . Remarque, l'exemple de didacticiel installé Nginx Mainline :
apt-cache policy nginx
Exemple de sortie pour Nginx Mainline :
Notez que vous pouvez être invité à conserver ou à remplacer votre /etc/nginx/ existant nginx.conf fichier de configuration lors de l'installation si Nginx était installé précédemment. Il est recommandé de conserver votre fichier de configuration actuel en appuyant sur (n) . Une copie sera faite quelle que soit la version du responsable, et vous pourrez également vérifier cela à l'avenir.
Vous remarquerez que des modules supplémentaires seront disponibles dans cette version, notamment le support brotli. Pour installer brotli , suivez les étapes ci-dessous.
Ouvrez votre nginx.conf fichier de configuration :
nano /etc/nginx/nginx.conf
Ajoutez maintenant les lignes supplémentaires avant dans le HTTP{} rubrique :
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
Le brotli_comp_level peut être défini entre 1 (le plus bas) et 11 (le plus élevé) . En règle générale, la plupart des serveurs se trouvent au milieu, mais si votre serveur est un monstre, réglez-le sur 11 et surveillez les niveaux d'utilisation du processeur.
Ensuite, testez pour vous assurer que les modifications fonctionnent correctement avant de les mettre en ligne :
sudo nginx -t
Si les modifications fonctionnent correctement, vous devriez voir ce qui suit :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Appliquez maintenant les modifications en redémarrant votre serveur :
sudo systemctl restart nginx
sudo systemctl status nginx
Exemple de résultat :
Configuration UFW
Par défaut, UFW est installé sur Ubuntu 20.04. Si vous utilisez UFW ou souhaitez une vue plus claire de l'exécution d'un pare-feu, utilisez les informations ci-dessous pour configurer UFW pour Nginx.
Si UFW n'est pas installé, réinstallez le pare-feu à l'aide de la commande suivante :
sudo apt install ufw -y
Ensuite, activez UFW avec la commande suivante.
sudo ufw enable
Par défaut, toutes les connexions entrantes sont désormais bloquées et toutes les connexions sortantes sont autorisées.
Ensuite, découvrez les applications que vous avez installées en saisissant ce qui suit.
sudo ufw app list
Exemple de sortie (notez qu'une longue liste d'autres applications apparaîtra également) :
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
Ensuite, vous pouvez activer Nginx en HTTP (port 80), HTTPS (port 443) ou complet, y compris toutes les options.
HTTP (port 80) :
sudo ufw allow 'Nginx HTTP'
HTTP (port 443) :
sudo ufw allow 'Nginx HTTPS'
HTTP et HTTPS (complet) :
sudo ufw allow 'Nginx FULL'
Dans le tutoriel, "Nginx (Full)" a été activé.
Exemple de résultat :
Rules updated
Rules updated (v6)
Confirmez que les règles de pare-feu sont actives avec la commande suivante.
sudo ufw status
Vous verrez les règles répertoriées dans la sortie.
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
Une fois UFW configuré, vérifiez que vous pouvez voir la page d'accueil Nginx dans votre navigateur Internet.
http://your_server_ip
Si tout fonctionne bien, vous devriez arriver sur la page suivante :
Configurer le serveur Nginx
Vous aurez besoin d'avoir l'adresse IP du serveur prête pour la configuration. La façon la plus simple de le faire est avec ce qui suit.
Rechercher l'adresse IP du serveur
Vous aurez besoin d'avoir l'adresse IP du serveur prête pour la configuration. La façon la plus simple de le faire est avec ce qui suit.
curl -4 icanhazip.com
Exemple de résultat :
XXX.XXX.XXX.XXX IP address
Si une erreur survient, il est fort probable que vous deviez installer le package curl sur votre système. Exécutez rapidement cette commande :
sudo apt install curl -y
Configurer le répertoire source du site
Nginx blocs de serveur (similaire aux hôtes virtuels dans Apache) peut encapsuler les détails de configuration et héberger plusieurs domaines à partir d'un seul serveur. Dans le didacticiel, vous configurerez un domaine appelé example.com , mais vous devez remplacer ceci par votre nom de domaine .
Lorsque vous installez Nginx, il est créé avec un répertoire www préinstallé. L'emplacement se trouve à /var/www/html/ .
Tout d'abord, créez le répertoire, pour example.com , comme suit, en utilisant l'indicateur "-p" pour créer les répertoires parents nécessaires :
sudo mkdir -p /var/www/example.com/html
Deuxièmement, vous devrez attribuer le propriétaire du répertoire.
sudo chown -R $USER:$USER /var/www/your_domain/html
Troisièmement, attribuez les autorisations du répertoire, afin que le propriétaire lise, écrive et exécute les fichiers tout en n'accordant que des autorisations de lecture et d'exécution aux groupes et autres. Vous pouvez saisir la commande suivante :
sudo chmod -R 755 /var/www/your_domain
Configurer la page HTML de test
Quatrièmement, créez une page de test que vous utiliserez pour confirmer que votre serveur Nginx est opérationnel.
nano /var/www/your_domain/html/index.html
À l'intérieur de l'éditeur nano et du nouveau fichier que vous avez créé. Entrez ce qui suit.
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Enregistrez le fichier CTRL+O, puis quittez CTRL+X .
Créer un bloc de serveur Nginx
Maintenant, vous allez créer le bloc serveur pour votre site Web. Nous allons créer un nouveau bloc de serveur comme suit.
sudo nano /etc/nginx/sites-available/your_domain.conf
Vous pouvez coller l'exemple de code suivant dans le bloc. Ceci n'est qu'un exemple HTTP uniquement pour les tests de base.
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
L'exemple montre que votre serveur écoute deux noms de serveur, "votre_domaine" sur le port 80.
Vous devrez remplacer le répertoire racine par le nom/l'emplacement du répertoire racine que vous créez.
Activer le blocage du serveur Nginx
Pour activer les blocs de serveur Nginx, vous devez lier les fichiers de configuration de sites-available à sites-enabled dans votre répertoire Nginx. Cela peut être fait avec la commande ln -s comme suit.
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Configuration finale et test de fonctionnement
Dans la dernière étape, vous devrez ouvrir votre fichier nginx.conf par défaut fichier.
sudo nano /etc/nginx/nginx.conf
Et décommentez la ligne suivante.
server_names_hash_bucket_size 64;
La taille du compartiment de hachage du nom du serveur est modifiée, car des problèmes surviennent parfois lors de l'ajout de serveurs supplémentaires.
Ensuite, testez votre Nginx pour vous assurer qu'il fonctionne avant de redémarrer correctement.
sudo nginx -t
Le résultat devrait être s'il n'y a pas d'erreurs dans la syntaxe :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si vous obtenez la sortie ok suivante, redémarrez le serveur Nginx pour que les modifications aient lieu.
sudo systemctl restart nginx
Ouvrez maintenant votre Navigateur Internet et saisissez le nom de domaine du serveur . Vous devriez voir que votre bloc de serveur est en ligne.
Sécuriser Nginx avec le certificat gratuit Let's Encrypt SSL
Idéalement, vous voudriez exécuter votre Nginx sur HTTPS en utilisant un certificat SSL . La meilleure façon de le faire est d'utiliser Let's Encrypt, une autorité de certification gratuite, automatisée et ouverte gérée par le Groupe de recherche sur la sécurité Internet (ISRG) à but non lucratif .
Tout d'abord, installez le package certbot comme suit :
sudo apt install python3-certbot-nginx -y
Une fois installé, exécutez la commande suivante pour lancer la création de votre certificat :
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
Il s'agit de la configuration idéale qui inclut les redirections HTTPS 301 forcées, l'en-tête Strict-Transport-Security et l'agrafage OCSP. Assurez-vous simplement d'adapter l'adresse e-mail et le nom de domaine à vos besoins.
Maintenant, votre URL sera HTTPS://www.example.com au lieu de HTTP://www.example.com .
Remarque, si vous utilisez l'ancienne URL HTTP , il redirigera automatiquement vers HTTPS .
Comment accéder aux journaux du serveur Nginx
Répertoire des journaux Nginx
Par défaut, tous les journaux d'accès/d'erreurs NGINX, sauf si vous les avez modifiés, se trouvent dans le répertoire des journaux, que la commande suivante peut afficher.
Tout d'abord, accédez au répertoire des journaux et répertoriez les fichiers :
cd /var/log/nginx && ls -l
Vous devriez trouver les fichiers d'accès et d'erreur suivants :
Journal d'accès :
/var/log/nginx/access.log
Journal des erreurs :
/var/log/nginx/error.log
Pour afficher les journaux en temps réel dans votre terminal à l'aide de la commande sudo tail -f /location/of/log path.
Exemple :
sudo tail -f /var/log/nginx/access.log
Une autre option consiste à imprimer le dernier nombre X de lignes. Par exemple, X est remplacé par 30 pour imprimer 30 lignes en ajoutant les drapeaux -n 30 .
sudo tail -f /var/log/nginx/access.log -n 30
Ce ne sont là que quelques exemples de lecture de journaux.
Comment configurer la rotation des journaux Nginx
Nginx installe automatiquement la rotation des journaux et la configure par défaut, qui consiste à effectuer une rotation quotidienne. Vous pouvez modifier ces paramètres en accédant au fichier comme indiqué ci-dessous.
sudo nano /etc/nginx/logrotate.d/nginx
Ensuite, vous verrez la même structure de fichiers sinon similaire. Vous pouvez modifier le contenu ici. La plupart du temps, vous pouvez modifier le nombre de journaux à conserver ou passer de quotidien à hebdomadaire. Cela devrait être laissé par défaut, sauf si vous avez des besoins spécifiques en matière de journalisation pour des logiciels tels que la surveillance fail2ban ou similaire.
/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
}
Les principaux paramètres que vous souhaiterez probablement modifier sont les suivants :
- Tous les jours – Cela peut être changé en Hebdomadaire, Mensuel. Cela doit être conservé quotidiennement, sinon il sera difficile de parcourir le fichier journal.
- Rotation 14 – C'est le nombre de journaux à conserver et à supprimer, donc au maximum il n'y a que 14 journaux, si vous ne voulez conserver que 7 jours de journaux, changez-le en 7.
Il est recommandé de ne toucher à aucun autre paramètre à moins que vous ne sachiez ce que vous faites.
Comment mettre à jour Nginx
Nginx sera mis à jour par défaut lorsqu'une nouvelle version arrivera dans les référentiels. Avant la mise à niveau, il est toujours conseillé de sauvegarder votre répertoire Nginx ou, à tout le moins, le nginx.conf dossier. Vous pouvez faire l'un ou l'autre avec la commande suivante.
Sauvegarder nginx.conf (fortement recommandé) :
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Sauvegardez l'intégralité de votre dossier Nginx si vous préférez :
sudo cp /etc/nginx/ /etc/nginx-bkup
Ensuite, exécutez la commande de mise à jour standard.
sudo apt update
Si une mise à niveau est disponible, exécutez la mise à niveau.
sudo apt upgrade
Vous pouvez être invité à le faire lors d'une mise à niveau ou d'une installation, mais il est essentiel de le faire manuellement au préalable. Pour les grandes configurations Nginx de plusieurs sites, la sauvegarde sur quelque chose comme Github ou Gitlab serait encore plus bénéfique.