Problème : héberger plusieurs domaines sur une seule adresse IP
Héberger plusieurs sites web avec différents noms de domaine sur une seule adresse IP de serveur peut être compliqué. Nginx, un serveur web populaire, offre une solution à ce problème, mais nécessite une configuration appropriée pour gérer plusieurs domaines.
Solution : configuration correcte de Nginx pour plusieurs domaines
Mise en place des blocs serveur
Les blocs serveur dans Nginx permettent d'héberger plusieurs domaines sur un seul serveur. Ils vous permettent de définir différentes configurations pour chaque domaine, y compris les racines de documents et la journalisation.
Pour créer des blocs serveur pour chaque domaine, définissez-les dans votre fichier de configuration Nginx. Chaque bloc serveur commence par la directive server
et contient les paramètres pour ce domaine.
Conseil: Organisez votre configuration
Gardez votre configuration Nginx propre en créant des fichiers séparés pour chaque domaine dans le répertoire /etc/nginx/sites-available/. Ensuite, créez des liens symboliques vers ces fichiers dans le répertoire /etc/nginx/sites-enabled/ pour les activer.
Configuration de la directive Listen
La directive 'listen' dans Nginx indique au serveur quelle adresse IP et quel port utiliser pour les connexions entrantes. Lors de la configuration de plusieurs domaines, utilisez correctement la directive 'listen'.
La bonne façon d'utiliser la directive 'listen' est de spécifier uniquement le numéro de port, généralement 80 pour HTTP ou 443 pour HTTPS. Par exemple :
listen 80;
N'incluez pas le domaine dans la directive 'listen'. C'est incorrect et peut causer des problèmes.
Utilisation de la directive Server_Name
La directive 'server_name' est importante pour le routage des domaines dans Nginx. Elle indique à Nginx quels noms de domaine associer à un bloc serveur.
Pour configurer 'server_name' pour chaque domaine, incluez-le dans le bloc serveur. Par exemple :
server_name www.domain1.example domain1.example;
Vous pouvez ajouter plusieurs noms de domaine, avec et sans le préfixe 'www', pour couvrir toutes les versions de votre nom de domaine.
Exemple: Sous-domaines avec caractère générique
Si vous voulez correspondre à tous les sous-domaines d'un domaine, vous pouvez utiliser un caractère générique dans la directive server_name :
server_name *.domain1.example;
Cela correspondra à n'importe quel sous-domaine de domain1.example.
Guide étape par étape pour configurer Nginx pour plusieurs domaines
Modification du fichier de configuration Nginx
Pour configurer plusieurs domaines dans Nginx, localisez et ouvrez le fichier de configuration principal de Nginx. Sur la plupart des systèmes, ce fichier se trouve à /etc/nginx/nginx.conf
. Il est préférable de créer des fichiers de configuration séparés pour chaque domaine dans le répertoire /etc/nginx/sites-available/
.
Pour créer des blocs serveur séparés pour chaque domaine :
-
Ouvrez un nouveau fichier dans le répertoire sites-available :
sudo nano /etc/nginx/sites-available/domain1.conf
-
Ajoutez un bloc serveur pour votre premier domaine :
server { listen 80; server_name domain1.com www.domain1.com; # Autres directives... }
-
Répétez ce processus pour votre deuxième domaine dans un nouveau fichier :
sudo nano /etc/nginx/sites-available/domain2.conf
-
Ajoutez le bloc serveur pour le deuxième domaine :
server { listen 80; server_name domain2.com www.domain2.com; # Autres directives... }
Conseil: Créer des liens symboliques pour les fichiers de configuration
Après avoir créé les fichiers de configuration dans le répertoire sites-available, créez des liens symboliques pour les activer :
sudo ln -s /etc/nginx/sites-available/domain1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.conf /etc/nginx/sites-enabled/
Cette méthode vous permet d'activer ou de désactiver facilement des sites en créant ou en supprimant des liens symboliques.
Configuration des répertoires racine
Des répertoires racine séparés pour chaque domaine permettent de garder les fichiers des différents sites web séparés, facilitant ainsi la gestion et la sécurité.
Pour spécifier les répertoires racine dans la configuration :
-
Créez des répertoires pour chaque domaine :
sudo mkdir -p /var/www/domain1.com sudo mkdir -p /var/www/domain2.com
-
Dans le bloc serveur de chaque domaine, ajoutez la directive root :
server { listen 80; server_name domain1.com www.domain1.com; root /var/www/domain1.com; # Autres directives... }
Configuration du traitement PHP (si applicable)
Si vos sites web utilisent PHP, configurez FastCGI pour le traitement PHP :
-
Dans chaque bloc serveur, ajoutez un bloc location pour PHP :
server { # Autres directives... location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
-
Assurez-vous que les paramètres FastCGI sont corrects pour chaque domaine. Les directives
fastcgi_param
doivent pointer vers la racine du document correcte :fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Après avoir effectué ces modifications, testez votre configuration Nginx et redémarrez le service Nginx pour appliquer les changements.