Nginx est l’un des serveurs Web les plus populaires au monde et se charge de l’hébergement de certains des sites les plus importants et les plus fréquentés sur Internet. Il est plus respectueux des ressources qu’Apache dans la plupart des cas, et peut être utilisé comme serveur web ou proxy inverse.
Dans ce guide, nous allons voir comment installer Nginx sur votre serveur Ubuntu 18.04.
Avant de commencer ce guide, vous devez avoir un non-root user normal avec des privilèges sudo configurés sur votre serveur. Vous pouvez apprendre à configurer un compte utilisateur normal en suivant notre guide de configuration initiale de serveur pour Ubuntu 18.04.
Lorsque vous avez un compte disponible, connectez-vous en tant qu’utilisateur non root pour commencer.
Étant donné que Nginx est disponible dans les référentiels d’Ubuntu par défaut, il est possible de l’installer à partir de ces référentiels en utilisant le gestionnaire de packages apt
.
Etant donné qu’il s’agit de notre première interaction avec le gestionnaire de packages apt
au cours de cette session, nous mettrons à jour notre index de package local afin d’avoir accès aux listes de packages les plus récentes. Ensuite, nous pouvons installer nginx
:
- sudo apt update
- sudo apt install nginx
Après avoir accepté la procédure, apt
installera Nginx et toute dépendances requise sur votre serveur.
Avant de tester Nginx, vous devez régler votre logiciel de pare-feu pour autoriser l’accès au service. Lors de l’installation, Nginx s’enregistre en tant que service avec ufw
afin d’en faciliter l’accès.
Énumérez les configurations d’application avec lesquelles ufw
sait travailler en saisissant :
- sudo ufw app list
Vous devriez obtenir une liste des profils de l’application :
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Comme vous pouvez le voir, il existe trois profils pour Nginx :
Nous vous recommandons d’activer le profil le plus restrictif qui autorisera tout de même le trafic que vous avez configuré. Étant donné que nous n’avons pas configuré SSL pour notre serveur pour l’instant, nous allons uniquement besoin d’autoriser le trafic sur le port 80.
Vous pouvez l’activer en tapant :
- sudo ufw allow 'Nginx HTTP'
Vous pouvez vérifier le changement en saisissant :
- sudo ufw status
Vous devriez voir le trafic HTTP autorisé dans la sortie affichée :
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
À la fin du processus d’installation, Ubuntu 18.04 démarre Nginx. Le serveur web devrait déjà être opérationnel.
Nous pouvons vérifier grâce au système init systemd
que le service fonctionne bien en saisissant :
- systemctl status nginx
Output● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Comme vous pouvez le voir ci-dessus, le service semble avoir démarré avec succès. Cependant, la meilleure façon de le vérifier sonsiste à demander une page à partir de Nginx.
Naviguez sur l’adresse IP de votre serveur pour accéder à la page d’accueil par défaut de Nginx et confirmer que le logiciel fonctionne correctement. Si vous ne connaissez pas l’adresse IP de votre serveur, vous pouvez l’obtenir de plusieurs façons différentes.
Essayez de taper ceci à l’invite de commande de votre serveur :
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Vous récupérerez quelques lignes. Vous pouvez essayer chacune d’elles dans votre navigateur web pour voir si elles fonctionnent.
Sinon, vous pouvez également saisir la commande qui vous donnera votre adresse IP publique comme elle apparaît à partir d’un autre emplacement sur Internet :
- curl -4 icanhazip.com
Une fois que vous avez l’adresse IP de votre serveur, saisissez-la dans la barre d’adresse de votre navigateur :
http://your_server_ip
Vous devriez voir la page de destination par défaut de Nginx :
Cette page est incluse dans Nginx pour vous montrer que le serveur fonctionne correctement.
Maintenant que votre serveur web fonctionne, examinons certaines commandes de base de gestion.
Pour arrêter votre serveur Web, tapez :
- sudo systemctl stop nginx
Pour démarrer le serveur web lorsqu’il est arrêté, tapez :
- sudo systemctl start nginx
Pour arrêter puis redémarrer le service, tapez :
- sudo systemctl restart nginx
Si vous procédez simplement à des modifications de configuration, il se peut que Nginx se recharge souvent sans interrompre les connexions. Pour ce faire, tapez :
- sudo systemctl reload nginx
Par défaut, Nginx est configuré pour un lancement automatique au démarrage du serveur. Si ce n’est pas ce que vous souhaitez, vous pouvez désactiver ce comportement en tapant :
- sudo systemctl disable nginx
Pour réactiver le service de lancement automatique au démarrage, vous pouvez taper :
- sudo systemctl enable nginx
Avec le serveur Web Nginx, vous pouvez utiliser des blocs de serveur (similaires aux hôtes virtuels dans Apache) pour encapsuler les détails de configuration et héberger plusieurs domaines à partir d’un seul serveur. Nous allons configurer un domaine appelé example.com, mais vous devez le remplacer par le nom propre à votre domaine. Pour en savoir plus sur la mise en place d’un nom de domaine avec DigitalOcean, voir notre Introduction à DigitalOcean DNS.
Nginx sur Ubuntu 18.04 dispose d’un bloc serveur activé par défaut qui est configuré pour servir des documents à partir d’un répertoire à /var/www/html
. Même si cela fonctionne bien pour un seul site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html
, créons une structure de répertoire au sein de /var/www
pour votre example.com, en laissant /var/www/html
en place comme répertoire par défaut qui sera utilisé si une demande du client ne correspond à aucun autre site.
Créez le répertoire pour example.com, en utilisant l’indicateur -p
pour créer tout répertoire parent nécessaire :
- sudo mkdir -p /var/www/example.com/html
Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER
- sudo chown -R $USER:$USER /var/www/example.com/html
Les autorisations de vos racines web devraient être correctes si vous n’avez pas modifié votre valeur umask
, mais vous pouvez vous en assurer en tapant :
- sudo chmod -R 755 /var/www/example.com
Ensuite, créez une page index.html
à l’aide de nano
ou de votre éditeur favori :
- nano /var/www/example.com/html/index.html
À l’intérieur, ajoutez l’exemple de HTML suivant :
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
Enregistrez et fermez le fichier lorsque vous avez terminé.
Pour que Nginx puisse offrir ce contenu, vous devez créer un bloc serveur en utilisant les directives correctes. Au lieu de directement modifier le fichier de configuration par défaut, créons-en un nouveau dans /etc/nginx/sites-available/example.com
:
- sudo nano /etc/nginx/sites-available/example.com
Collez le bloc de configuration suivant, qui est similaire à celui par défaut, mais mis à jour pour notre nouveau répertoire et notre nom de domaine :
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Notez que nous avons mis à jour la configuration root
de notre nouveau répertoire et le server_name
vers notre nom de domaine.
Ensuite, activons le fichier en créant un lien depuis celui-ci vers le répertoire sites-enabled
, que Nginx lit lors du démarrage :
- sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Deux blocs serveur sont désormais activés et configurés pour répondre aux demandes en fonction de leurs directives listen
et server_name
(vous pouvez en savoir plus sur la façon dont Nginx traite ces directives en cliquant ici) :
example.com
: répondra aux requêtes pour example.com
et www.example.com
.default
: répondra à toutes les demandes provenant du port 80 qui ne correspondent pas aux deux autres blocs.Pour éviter un éventuel problème de mémoire de compartiment de hachage pouvant résulter de l’ajout de noms de serveur supplémentaires, vous devez configurer une valeur unique dans le fichier /etc/nginx/nginx.conf
. Ouvrez le fichier :
- sudo nano /etc/nginx/nginx.conf
Recherchez la directive server_names_hash_bucket_size
et supprimez le symbole #
pour décommenter la ligne :
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, procédez à un test pour vous assurer qu’il n’y a aucune erreur de syntaxe dans aucun de vos fichiers Nginx :
- sudo nginx -t
S’il n’y a pas de problème, redémarrez Nginx pour activer vos modifications :
- sudo systemctl restart nginx
Nginx devrait maintenant vous présenter votre nom de domaine. Vous pouvez le vérifer en allant sur http://example.com
où vous devriez voir quelque chose similaire à ceci :
Maintenant que vous savez comment gérer le service Nginx en lui-même, vous devriez prendre quelques minutes pour vous familiariser avec quelques répertoires et fichiers importants.
/var/www/html
: le contenu web réel (qui par défaut ne consiste qu’en la page Nginx par défaut que vous avez vue précédemment), est présenté à partir du répertoire /var/www/html
. Cela peut être modifié en changeant les fichiers de configuration Nginx./etc/nginx
: répertoire de configuration Nginx. Tous les fichiers de configuration Nginx se trouvent ici./etc/nginx/nginx.conf
: fichier de configuration principal de Nginx. Celui-ci peut être modifié pour apporter des changements à la configuration globale de Nginx./etc/nginx/sites-available/
: répertoire dans lequel vous pouvez stocker les blocs de serveur par site. Nginx n’utilisera pas les fichiers de configuration trouvés dans ce répertoire à moins qu’ils ne soient liés au répertoire sites-enabled
. En règle générale, la configuration de tous les blocs de serveur se fait dans ce répertoire, puis s’active en établissant une liaison avec l’autre répertoire./etc/nginx/sites-enabled/
: répertoire dans lequel les blocs de serveur par site activés sont stockés. En règle générale, ils sont créés en reliant les fichiers de configuration trouvés dans le répertoire sites-available
./etc/nginx/snippets
: ce répertoire contient des fragments de configuration qui peuvent être inclus ailleurs dans la configuration Nginx. Les segments de configuration potentiellement reproductibles sont de bons candidats pour la refactorisation en fragments./var/log/nginx/access.log
: chaque requête adressée à votre serveur web est enregistrée dans ce fichier journal, sauf si Nginx est configuré pour procéder autrement./var/log/nginx/error.log
: toute erreur Nginx sera enregistrée dans ce journal.Maintenant que votre serveur Web est installé, vous disposez de nombreuses options pour le type de contenu que vous voulez présenter et les technologies que vous souhaitez utiliser afin de créer une expérience plus riche.
Si vous souhaitez construire une pile d’applications plus complète, consultez cet article sur Comment configurer une pile LEMP sur Ubuntu 18.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.