Dans ce guide, nous allons explorer comment utiliser nginx dans Ubuntu 20.04, c'est-à-dire installer nginx et configurer nginx pour servir un site virtuel.
Installer Nginx
mettre à jour notre index de packages local afin que nous ayons accès aux listes de packages les plus récentes
sudo apt update
Installer nginx
sudo apt install nginx
Mettre à jour le pare-feu
Lister les applications ufw disponibles :
sudo ufw app list
Exemple de sortie :
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Les profils Nginx répertoriés :
Nginx Full
– À la fois http – 80 et https – 443Nginx HTTP
– uniquement le trafic http 80Nginx HTTPS
– Trafic https uniquement 443 – Trafic crypté TLS/SSL
Activez le profil que vous souhaitez - à la fois http et https dans notre cas :
sudo ufw allow 'Nginx Full'
Vérifiez le changement
sudo ufw status
La commande ci-dessus indiquera quel trafic est autorisé.
Configurer nginx
Vérifier la version installée
sudo apt list --installed | grep nginx
Vérifier le service systemd
sudo systemctl status nginx
Vous devriez voir cette sortie indiquant que nginx est en cours d'exécution
● 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 2021-07-30 14:07:33 UTC; 2min 42s ago
Docs: man:nginx(8)
Main PID: 4684 (nginx)
Tasks: 5 (limit: 9257)
CGroup: /system.slice/nginx.service
├─4684 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─4685 nginx: worker process
├─4686 nginx: worker process
├─4687 nginx: worker process
└─4688 nginx: worker process
Jul 30 14:07:33 frhb64566ds systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 30 14:07:33 frhb64566ds systemd[1]: Started A high performance web server and a reverse proxy server.
Pour vous assurer que le service nginx fonctionne toujours même après le redémarrage, utilisez cette commande systemnd pour activer :
sudo systemctl enable nginx
Vous pouvez utiliser ces autres commandes systemd pour gérer nginx :
# To start the service
sudo systemctl start nginx
# To restart the service
sudo systemctl restart nginx
# To reload the service config
sudo systemctl reload nginx
# To stop the service config
sudo systemctl restart nginx
# To disable the service config
sudo systemctl restart nginx
Pour confirmer que nginx est en cours d'exécution et est accessible, utilisez cette commande :
curl http://server_ip/
où server_ip
est l'IP de votre serveur. Si, pour une raison quelconque, vous ne connaissez pas l'adresse IP publique de votre serveur, utilisez ceci pour vérifier :
curl -4 icanhazip.com
Ensuite :
curl http://178.170.10.54/
Vous devriez obtenir la page nginx par défaut.
Servir une page statique simple nginx
Jetons un coup d'œil à un exemple pour servir une page statique avec nginx. La page statique est html et css qui ne nécessite aucun rendu côté serveur. Nous allons utiliser l'exemple de domaine your.domain.com
dans notre cas.
Étapes :
-
Créez le répertoire pour stocker notre contenu statique (nous utiliserons
/var/www/your.domain.com
)sudo mkdir -p /var/www/your.domain.com
-
Assurez-vous que le répertoire créé est accessible par l'utilisateur actuel
sudo chown -R ${USER}:${USER} /var/www/your.domain.com sudo chmod -R 755 /var/www/your.domain.com
-
Ajoutez un exemple de fichier au répertoire (
/var/www/your.domain.com/index.html
)cat > /var/www/your.domain.com/index.html <<EOF <html> <head> <title>Hola from your.domain.com!</title> </head> <body> <h1>Hey!</h1> <p>Our site <i>your.domain.com</i> is working as expected.</p> </body> </html> EOF
-
Créez la configuration nginx dans le répertoire
/etc/nginx/conf.d
où nginx recherche les configurations à inclure lors du service. Nous allons créer le fichier/etc/nginx/conf.d/your.domain.com.conf
avec le contenu requis.
Utilisez cette commande :
cat > /etc/nginx/conf.d/your.domain.com.conf <<EOF
server {
listen 80;
server_name your.domain.com;
root /var/www/your.domain.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
EOF
-
Testez pour vous assurer qu'il n'y a pas d'erreurs de syntaxe dans l'un des fichiers nginx
sudo nginx -t
-
S'il n'y a pas d'erreurs, redémarrez nginx pour recharger la configuration
sudo systemctl restart nginx
-
Pour vous assurer que votre domaine peut atteindre le serveur, modifiez votre configuration DNS pour vous assurer que A enregistre le site
your.domain.com
pointe vers l'IP du serveur.
Votre site devrait maintenant être opérationnel. Confirmez en visitant http://votre.domaine.com
Fichiers et répertoires Nginx importants dans Nginx
-
/var/www/html
:Il s'agit du répertoire de contenu Web. Celui-ci contient le contenu de la page par défaut dans le fichierindex.nginx-debian.html
. Cette page est rendue lorsqu'aucun hôte de serveur spécifique n'est défini. -
/etc/nginx
:Ceci contient tous les fichiers de configuration nginx. -
/etc/nginx/nginx.conf
:Il s'agit du principal fichier de configuration global de nginx -
/etc/nginx/sites-available/
:Le répertoire où les blocs de serveur par site peuvent être stockés. Nginx n'utilisera pas les fichiers de configuration trouvés dans ce répertoire à moins qu'ils ne soient liés ausites-enabled
annuaire. En règle générale, toute la configuration du bloc de serveur est effectuée dans ce répertoire, puis activée en établissant un lien vers l'autre répertoire. -
/etc/nginx/sites-enabled/
:Le répertoire dans lequel les blocs de serveur par site activés sont stockés. En règle générale, ceux-ci sont créés en créant un lien vers 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 extraits. -
/var/log/nginx/access.log
:Chaque demande adressée à votre serveur Web est enregistrée dans ce fichier journal, sauf si Nginx est configuré pour faire autrement. -
/var/log/nginx/error.log
: Toutes les erreurs Nginx seront enregistrées dans ce journal.