Nginx : Comment activer un site avec sites-enabled ou nginx-modsite

Parfois, on peut avoir besoin d'activer un nouveau site ou désactiver temporairement un site WEB sur Nginx.
Pour vous aider, les distributions Linux Debian ou Ubuntu proposent des répertoires sites-available et sites-enabled dans /etc/nginx.
A partir de là, on peut utiliser des commandes nginx pour activer ou désactiver un site.

Dans ce tutoriel, je vous explique comment activer un site WEB sur Nginx avec deux méthodes par sites-enabled et nginx-modsite.

Nginx : Comment activer un site avec sites-enabled ou nginx-modsite

sites-enabled dans nginx : comment ça marche

Dans les distributions Linux à base de Debian comme Ubuntu, on trouve deux sous-répertoire dans /etc/nginx :

  • sites-available : qui stocke le fichier de configuration des sites
  • sites-enabled : qui contient des liens symboliques vers le fichier de configuration de sites-available

Nginx joue les fichiers de configuration contenus dans sites-enabled.
Ainsi pour activer un site WEB, il suffit de créer le lien symbolique puis recharger la configuration nginx.
Ce fonctionnement n'a rien d'exceptionnel, puisque munin fonctionne de la même manière pour les plugins.
Apache2 fonctionne aussi comme cela pour activer des sites ou modules.

Dans certains distributions Linux, la configuration des sites est à placer dans le dossier /etc/nginx/conf.d/

Le chargement de la configuration des sites se fait à travers un include présent dans /etc/nginx/nginx.conf :

include /etc/nginx/sites-enabled/*;

Lors de l'installation du paquet nginx, ce dernier créé le fichier /etc/nginx/sites-available/default avec une configuration par défaut.

sites-enabled dans nginx : comment ça marche

Comment activer/désactiver un site sur Nginx manuellement

Activer un site sur nginx

  • Créez le fichier de configuration de votre site dans sites-available, dans cet exemple monsupersite :
sudo vim /etc/nginx/sites-available/monsupersite
Le nom du fichier configuration ne doit pas obligatoire comporter l'extension .conf puisque la directive include charge tous les fichiers.
Ainsi, dans notre exemple, vous pouvez utiliser le nom supersite ou supersite.conf
  • Puis créez la structure server de la configuration du site
server {
        root /var/www/html2;
        location / {
            ...
        }
}
  • Ensuite créez le lien symbolique dans /etc/nginx/sites-enabled avec la commande ln :
sudo ln -s /etc/nginx/sites-available/monsupersite /etc/nginx/sites-enabled/monsupersite
  • Eventuellement vérifiez que le fichier est correctement créé :
ls -lh /etc/nginx/sites-enabled/
cat /etc/nginx/sites-enabled/monsupersite
  • Vérifiez que la configuration nginx est correcte :
nginx -t
sudo systemctl nginx reload

Désactiver un site Nginx

La désactivation d'un site sur Nginx est très simple, il suffit de supprimer le lien symbolique.

  • Vous pouvez supprimer le fichier de configuration à l'aide de la commande rm :
sudo rm /etc/nginx/sites-enabled/monsupersite
  • Puis relancez la configuration de nginx :
sudo systemctl nginx reload

Comment activer/désactiver un site sur Nginx avec nginx-modsite

nginx-modsite est un script bash open source disponible sur github.
Ce dernier permet d'activer, désactiver des sites WEB Nginx et relancer la configuration.

OPTIONSDESCRIPTION
-e ou --enableActiver un site
-d ou --disable Disable siteDésactiver un site
-x ou --editEditer un site
-l ou --listLister la configuration des sites
Les options de la commande nginx-modsite

Pour télécharger le script nginx-modsite et le placer dans /usr/bin :

sudo wget https://raw.githubusercontent.com/ajsalkeld/nginx-modsite/master/nginx-modsite -O /usr/bin/nginx-modsite
sudo chmod +x /usr/bin/nginx-modsite

Pour activer un site on utilise l'option -e, par exemple, pour activer le site "monsupersite" :

sudo nginx-modsite -e monsupersite

Puis répondez oui avec la touche y pour recharcher la configuration nginx :

Would you like to reload the Nginx configuration now? (Y/n) y

Ensuite pour lister tous les sites de nginx et vérifiez que le site est bien actif, utilisez l'option -l :

sudo nginx-modsite -l
Available sites:
        default
        default.dpkg-old
        monsupersite
Enabled Sites
        default
        monsupersite
Comment activer/désactiver un site sur Nginx avec nginx-modsite

Enfin pour désactiver le site "monsupersite" dans nginx, on utilise l'option -d :

sudo nginx-modsite -d monsupersite

Confirmez à nouveau la mise à jour de la configuration de nginx par la touche y :

Would you like to reload the Nginx configuration now? (Y/n) y
Comment activer/désactiver un site sur Nginx avec nginx-modsite

Tags: