NGINX est un serveur web performant utilisé notamment pour gérer des fichiers statiques et comme reverse proxy. Grâce à sa polyvalence, NGINX peut être utilisé dans n'importe quelle situation. Dans ce guide, vous verrez comment l'installer sur votre serveur et comment le configurer pour deux domaines ou plus.
Tout d'abord, connectez-vous à votre serveur via une connexion SSH. Si vous ne l'avez pas encore fait, il est recommandé de suivre notre guide pour vous connecter en toute sécurité avec SSH. Dans le cas d'un serveur local, passez au point suivant et ouvrez le terminal de votre serveur.
Installation de NGINX
Mettre à jour les dépôts de distribution pour être sûr de télécharger la dernière version de NGINX :
$ sudo apt update
Exécutez la commande suivante pour installer le package NGINX :
$ sudo apt install nginx
Une fois l'installation terminée, lancez le service et installez-le sur le système :
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Configuration du pare-feu
En cas de pare-feu sur votre système, configurez-le pour autoriser le trafic HTTP et le trafic HTTPS vers votre machine.
Lorsque vous utilisez le pare-feu UFW, des profils préinstallés sont fournis pour NGINX. Voyons donc comment les activer.
Pour vérifier les profils disponibles installés sur le pare-feu UFW, exécutez cette commande :
$ sudo ufw app list
Une liste semblable à la suivante s'affichera à l'écran :
Available applications:
Dovecot IMAP
Dovecot POP3
Dovecot Secure IMAP
Dovecot Secure POP3
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
Pour autoriser le trafic HTTP (Port 80) et HTTPS (Port 443), utilisez le profil "Nginx Full".
Vérifiez les informations de votre profil comme indiqué ci-dessous :
$ sudo ufw app info "Nginx Full"
La description du profil à l'écran apparaît :
Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server
Ports:
80,443/tcp
Après avoir vérifié le profil, vous serez prêt à l'activer :
$ sudo ufw allow in "Nginx Full"
À ce stade, la configuration de NGINX et du pare-feu est terminée. Testez le serveur Web en visitant l'adresse http://
Configuration correcte de deux domaines/sites Web :
Ci-dessous, il est montré comment configurer deux hôtes virtuels (appelés "blocs de serveur") pour avoir deux espaces Web complètement séparés. Dans cet exemple, nous utiliserons deux domaines fictifs :
www.votredomaine.com
www.votredomaine2.com
Les deux enregistrements A doivent pointer vers l'adresse IP publique de votre serveur.
Commencez par créer tous les dossiers nécessaires pour contenir les fichiers publics de vos sites Web :
$ sudo mkdir /var/www
$ sudo mkdir /var/www/yourdomain.com
$ sudo mkdir /var/www/yourdomain.com/htdocs
$ sudo mkdir /var/www/yourdomain.com/logs
$ sudo mkdir /var/www/yourdomain2.com
$ sudo mkdir /var/www/yourdomain2.com/htdocs
$ sudo mkdir /var/www/yourdomain2.com/logs
En tant que contenu temporaire, copiez la page NGINX par défaut dans les dossiers htdocs de chaque domaine :
$ sudo cp /usr/share/nginx/html/* /var/www/yourdomain.com/htdocs/
$ sudo cp /usr/share/nginx/html/* /var/www/yourdomain2.com/htdocs/
Passez maintenant à la configuration proprement dite de NGINX. NGINX lit généralement tous les fichiers .conf du répertoire /etc/nginx/conf.d/, poursuivez en créant deux fichiers (un par domaine), en les nommant :
votredomaine_com.conf
votredomaine2_com.conf
Utilisez votre éditeur de texte préféré pour écrire la configuration suivante dans le fichier yourdomain_com.conf :
server {
listen 80;
server_name yourdomain.com *.yourdomain.com;
root /var/www/yourdomain.com/htdocs;
access_log /var/www/yourdomain.com/logs/access.log main;
error_log /var/www/yourdomain.com/logs/error.log warn;
}
Évidemment, vous devez également utiliser une configuration similaire pour votredomaine2_com.conf :
server {
listen 80;
server_name yourdomain2.com *.yourdomain2.com;
root /var/www/yourdomain2.com/htdocs;
access_log /var/www/yourdomain2.com/logs/access.log main;
error_log /var/www/yourdomain2.com/logs/error.log warn;
}
En plus de la configuration du dossier racine pour les fichiers du domaine virtuel, il existe également des paramètres pour configurer les chemins des fichiers journaux (à la fois d'accès et d'erreur) afin d'avoir un journal par domaine. Normalement, NGINX enregistre tous les journaux dans le répertoire /var/log/nginx/ mais dans le cas d'un domaine multiple, le résultat peut prêter à confusion.
Les journaux peuvent devenir trop volumineux avec le temps si leur chemin est modifié., Il est donc nécessaire de mettre en place une rotation des fichiers afin d'éliminer les contenus les plus anciens. Pour cela, utilisez le logiciel logrotate.
Pour ajouter de nouveaux fichiers journaux dans les paramètres de logrotate, modifiez le fichier /etc/etc/logrotate.d/nginx :
/var/log/nginx/*log {
create 0644 nginx nginx
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
Comme vous pouvez le voir, il existe déjà une configuration pour les fichiers NGINX dans /var/log/nginx. Procédez en modifiant la première partie du fichier comme suit :
/var/log/nginx/*log
/var/www/*/logs/* {
...
}
Une fois cette modification effectuée, logrotate gérera tous les fichiers dans les dossiers de journaux de /var/www/mondomaine.it et /var/www/votredomaine.com (et tous les autres), sans avoir à vous soucier de tout autre domaine qui pourrait être ajouté à l'avenir.
Une fois terminé, redémarrez le service pour appliquer les modifications :
$ sudo systemctl reload nginx