Nginx est l'un des serveurs Web les plus populaires parmi les utilisateurs Linux et BSD en raison de son riche ensemble de fonctionnalités et de sa flexibilité supérieure. Si vous êtes un développeur Web, il y a de fortes chances que vous travailliez avec Nginx ou le serveur Apache. Il est donc essentiel d'avoir une compréhension approfondie du fonctionnement de Nginx à partir de la ligne de commande. Heureusement, vous pouvez augmenter vos compétences DevOps en maîtrisant quelques commandes Nginx. Nos éditeurs ont sélectionné pour vous ces commandes souvent utilisées et ont fourni une discussion complète pour les administrateurs Linux débutants. Continuez à lire pour en savoir plus sur ces commandes.
Commandes Nginx utiles pour les administrateurs Linux
Contrairement à de nombreux serveurs Web, Nginx traite la configuration du serveur en utilisant uniquement le fichier de configuration. Ainsi, il n'y a que quelques paramètres de ligne de commande que vous pouvez utiliser. Ceci est utile car les administrateurs peuvent trouver rapidement les commandes qu'ils recherchent. Vous trouverez ci-dessous quelques commandes Nginx largement utilisées que vous pouvez utiliser aujourd'hui.
Installation du serveur Web Nginx sous Linux
Nginx propose plusieurs packages d'installation pour différentes versions de Linux. Vous pouvez les trouver ici. Vous pouvez également installer le Nginx directement à l'aide de votre gestionnaire de packages, comme illustré ci-dessous.
$ sudo apt install nginx # Ubuntu $ sudo dnf install nginx # Fedora $ sudo yum install epel-release && yum install nginx # RHEL and CentOS
Il est également possible de compiler Nginx à partir de la source. Vous trouverez des détails à ce sujet dans ce guide.
1. Démarrer le serveur Nginx
Il est très facile de démarrer le serveur Web Nginx, comme illustré ci-dessous. Utilisez simplement l'une des commandes ci-dessous pour appeler le serveur Web standard.
$ sudo service nginx start- -
Lorsque vous émettez cette commande, Nginx est démarré par le script d'initialisation System V. Si vous exécutez Nginx à partir d'un système basé sur systemd comme Ubuntu Linux 16.04LTS et supérieur, vous devrez utiliser la commande ci-dessous.
$ sudo systemctl start nginx
Vous devriez obtenir une réponse indiquant si le serveur a démarré avec succès ou non. Une autre méthode simple mais efficace consiste à appeler directement Nginx en utilisant le chemin binaire, comme indiqué ci-dessous.
$ sudo /usr/bin/nginx
2. Arrêter le serveur Nginx
Vous pouvez également arrêter un serveur Nginx en cours d'exécution en utilisant des méthodes similaires présentées ci-dessus. Cependant, n'oubliez pas que lorsque vous arrêtez un serveur Nginx en cours d'exécution, tous les processus système qui lui sont associés sont tués. Il se terminera même si vous avez des connexions actives.
$ sudo service nginx stop
Cette commande arrêtera le processus Nginx dans les systèmes qui utilisent le script d'initialisation System V. Pour les machines basées sur systemd, la commande suivante peut être utilisée.
$ sudo systemctl stop nginx
Cependant, ces commandes peuvent encore prendre un temps considérable sur des serveurs occupés. La commande suivante montre comment arrêter le service Nginx plus rapidement.
$ sudo killall -9 nginx
3. Quittez le serveur Nginx
Quitter un serveur Nginx est similaire à en arrêter un - avec une différence distincte. Le démon Nginx adopte une approche gracieuse pour quitter en ce sens qu'il n'interrompra aucune connexion active. Ainsi, vos demandes client seront servies comme prévu avant la fermeture.
$ sudo service nginx quit
Utilisez cette commande pour quitter votre serveur Nginx à partir du shell Linux. Les utilisateurs exécutant une machine basée sur systemd peuvent utiliser la commande suivante pour effectuer ce travail.
$ sudo systemctl quit nginx
Vous pouvez également utiliser l'une des commandes Nginx suivantes pour quitter un serveur en cours d'exécution.
$ sudo nginx -s quit $ sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )
4. Redémarrez le serveur Nginx
Lorsque vous redémarrez le serveur, le processus Nginx s'arrête simplement, puis redémarre. Vous pouvez utiliser l'une des commandes ci-dessous pour redémarrer votre démon Nginx à partir de la ligne de commande.
$ sudo service nginx restart
Cette commande redémarrera le serveur Nginx à l'aide du script d'initialisation System V. Vous pouvez utiliser systemctl pour faire cela dans un système basé sur systemd comme les nouvelles versions d'Ubuntu.
$ sudo systemctl restart nginx
Vous pouvez également le faire d'une manière différente, comme le montre l'exemple suivant.
$ sudo /etc/init.d/nginx restart
Si vous avez compilé Nginx à partir de la source, vous pouvez utiliser la commande suivante.
$ sudo /usr/local/nginx/sbin/nginx -s restart
5. Recharger le serveur Nginx
Le rechargement d'un serveur Nginx diffère légèrement du redémarrage d'un serveur. Lorsque vous rechargez un serveur, Nginx s'arrête de manière gracieuse. Cela signifie que le démon Nginx se terminera d'abord, puis analysera le fichier de configuration pour détecter les tentatives de modification et démarrera le nouveau processus de travail sans interrompre les opérations.
$ sudo service nginx reload $ sudo systemctl status nginx
La première commande utilise le script d'initialisation System V, tandis que la dernière commande est destinée aux distributions Linux basées sur systemd. Vous pouvez également invoquer le script suivant pour effectuer ce travail.
$ sudo /etc/init.d/nginx reload
Vous devez utiliser la commande suivante si vous avez compilé Nginx à partir du code source.
$ sudo /usr/local/nginx/sbin/nginx -s reload
La commande suivante est un autre moyen pratique de redémarrer gracieusement votre serveur Nginx.
$ sudo nginx -s reload
6. Vérifier le statut Nginx
Parfois, vous souhaiterez peut-être afficher l'état actuel de votre serveur Nginx avant d'effectuer des opérations dessus. Cela peut être fait très rapidement en utilisant l'une des commandes ci-dessous. N'oubliez pas de sudo votre commande ou passez à l'utilisateur root.
$ sudo service nginx status
Comme indiqué dans certaines commandes précédentes, cette commande fonctionne en initialisant le script d'initialisation System V. Vous pouvez utiliser la commande suivante pour les systèmes qui utilisent systemd à la place.
$ systemctl status nginx
Une autre façon de procéder serait d'utiliser directement le script Nginx init.d, comme illustré par la commande suivante.
$ sudo /etc/init.d/nginx status
Si Nginx est compilé à partir du code source, alors vous passez à la commande suivante.
$ sudo /usr/local/nginx/sbin/nginx -s status
7. Vérifier la configuration de Nginx
Comme il existe un large éventail de capacités de personnalisation Nginx, les administrateurs réseau doivent souvent modifier le fichier de configuration pour ajouter/déverrouiller de nouvelles fonctionnalités. Cependant, vous devez toujours tester votre fichier de configuration pour détecter d'éventuelles erreurs. Sinon, des utilisateurs malveillants pourraient exploiter les défauts de la configuration de votre serveur.
$ sudo nginx -t
Il s'agit d'une commande simple qui fait ce travail pour vous. Lorsque vous exécutez ceci, vous dites essentiellement à Nginx de vérifier le fichier de configuration pour les erreurs de syntaxe et de s'abstenir d'exécuter le serveur. Vous pouvez utiliser la commande suivante pour vider le résultat du test de configuration sur votre console de terminal.
$ sudo nginx -T
Vous pouvez également utiliser l'une des commandes Nginx suivantes pour tester la configuration de votre serveur Nginx.
$ sudo service nginx configtest # System V Init $ sudo systemctl config nginx # systemd-based
8. Envoyer des signaux à Nginx
Les administrateurs peuvent envoyer divers signaux utiles au démon Nginx. Vous devrez utiliser le -s drapeau pour envoyer un signal à Nginx, suivi du signal réel. Nous avions déjà vu des signaux en action lorsque nous l'avons utilisé pour quitter et recharger notre serveur Nginx. Ici, nous les spécifions dans l'ordre.
$ sudo nginx -s stop # stops a running Nginx server $ sudo nginx -s quit # quits Nginx server $ sudo nginx -s reload # gracefully restarts Nginx $ sudo nginx -s reopen # reopens server log file
Cependant, votre version de Nginx doit être au moins 0.7.53 ou plus. Sinon, vous ne pouvez pas envoyer de signaux à vos processus Nginx.
9. Afficher les informations de version de Nginx
Certaines nouvelles fonctionnalités de Nginx ne sont disponibles que pour les versions récentes. Les administrateurs peuvent donc rencontrer des problèmes de compatibilité sur les serveurs hérités. Vous pouvez facilement déterminer votre version de Nginx pour voir si vos problèmes ont quelque chose à voir avec la version du serveur ou non.
$ sudo service nginx -v # uses System V Init $ sudo systemctl -v nginx # for systemd-based distributions
Les commandes suivantes peuvent être utilisées pour afficher des informations supplémentaires concernant votre installation Nginx, telles que les variables de configuration et la version du compilateur.
$ sudo service nginx -V $ sudo systemctl -V nginx
De plus, si vous utilisez un serveur Linux basé sur Ubuntu ou Debian, vous pouvez utiliser la commande suivante pour connaître votre version de Nginx.
$ sudo apt-cache policy nginx
10. Afficher la page d'aide
La page d'aide de Nginx est un excellent point de référence pour les administrateurs Linux débutants et expérimentés. Vous pouvez utiliser l'une des commandes Nginx suivantes pour afficher cette référence à partir de l'émulateur de terminal Linux.
$ sudo service nginx -h # uses System V Init $ sudo systemctl -h nginx # for systemd-based distributions
Vous pouvez également utiliser les commandes suivantes pour effectuer ce travail.
$ sudo service nginx -? # uses System V Init $ sudo systemctl -? nginx # for systemd-based distributions
La référence à la page d'aide est toujours un excellent choix car elle permet d'avoir un aperçu rapide des options disponibles pour l'utilisateur.
11. Utiliser une autre configuration
Il existe une liste interminable de capacités de personnalisation offertes par les serveurs Web Nginx. Les administrateurs peuvent facilement modifier le fichier de configuration Nginx pour ajouter des fonctionnalités supplémentaires à leur serveur. Le fichier de configuration Nginx par défaut sur la plupart des systèmes est /etc/nginx/nginx.conf. Cependant, il est souvent recommandé d'implémenter d'abord vos personnalisations sur un autre fichier de configuration.
$ sudo nginx -c ~/test.conf
Notez que nous supposons que votre nouveau fichier de configuration est nommé test.conf. Remplacez cette partie par le nom réel de votre fichier de configuration. Vous pouvez maintenant tester vos nouvelles configurations à l'aide de la commande ci-dessous.
$ sudo nginx -t -c ~/test.conf
Vous pouvez également demander à Nginx de rechercher la configuration par défaut dans un répertoire différent lors de la compilation à partir de la source. Passez simplement ce répertoire lors de la configuration de l'installation.
# ./configure --conf-path=/etc/some/other/nginx.conf
12. Supprimer les messages sans erreur
Il est normal de recevoir des messages d'erreur lorsque vous testez de nouvelles configurations. Cependant, vous obtiendrez également de nombreuses informations non pertinentes lors de la vérification de vos personnalisations. Heureusement, le démon Nginx offre une option simple pour supprimer ces messages sans erreur, comme illustré ci-dessous.
$ sudo nginx -q -t -c ~/test.conf
Cette commande testera un fichier de configuration personnalisé appelé test.conf et omettra les informations inutiles de la sortie. Il est très utile pour les tâches d'administration de serveur distant.
13. Modifier la directive globale
La directive globale contient tous les paramètres de configuration disponibles pour votre serveur Nginx. C'est l'une des sections les plus sensibles de votre serveur Web et nécessite une attention particulière. Le -g permet aux administrateurs de définir des directives Nginx personnalisées pour leurs serveurs Web.
$ sudo nginx -g "pid /var/run/test.pid; worker_processes 2;"
Cette commande spécifie les directives globales Nginx pour le PID et définit le nombre de processus de travail, 2 dans ce cas. Nous pouvons maintenant tester cela en utilisant le fichier de configuration alternatif utilisé précédemment.
$ sudo nginx -t -c ~/test.conf -g "pid /var/run/test.pid; worker_processes 2;"
14. Modifier le chemin du préfixe Nginx
Le chemin du préfixe contient tous les fichiers utilisés par votre serveur Web Nginx. Il s'agit également du même répertoire utilisé par la configuration pour définir les chemins relatifs (à l'exception des sources de la bibliothèque). Par défaut, Nginx utilise le répertoire /usr/local/nginx comme préfixe. La commande ci-dessous montre comment nous pouvons remplacer cela à partir de la ligne de commande.
$ sudo nginx -p /path/to/new/prefix
Le -p flag nous permet de passer le nouvel emplacement du préfixe. Il est souvent utile lors du test de nouveaux serveurs. Cependant, cette option n'est pas disponible pour les serveurs Nginx antérieurs à la version 0.7.53.
15. Vérifier le module stub_status
Le stub_status Le module expose des métriques très importantes sur Nginx. Les administrateurs l'utilisent souvent pour surveiller leurs serveurs de messagerie Linux ou leurs serveurs proxy. Bien que tous les binaires Nginx pré-construits soient livrés avec ce module, votre serveur Nginx peut ne pas l'avoir si vous avez compilé Nginx à partir de la source. Vous pouvez utiliser la commande suivante pour tester si vous l'avez ou non.
$ sudo nginx -V 2>&1 | grep --color -- --with-http_stub_status_module
Si vous découvrez que ce module vous manque, vous pouvez toujours reconstruire Nginx à partir de la source. Incluez simplement le –with-http_stub_status_module paramètre lors de la configuration de Nginx, comme indiqué ci-dessous.
$ ./configure --with-http_stub_status_module
16. Vérifier le chemin Nginx
Il existe plusieurs commandes Nginx pour vérifier le chemin de votre installation Nginx. Comme les commandes quotidiennes du terminal Linux, vous pouvez toujours utiliser la commande which/whereis pour vérifier le chemin Nginx.
$ which nginx $ whereis nginx
Les commandes ci-dessus afficheront tous les emplacements système contenant des fichiers liés à votre configuration Nginx. Vous pouvez le faire d'une autre manière en utilisant la commande ps et en cherchant les informations requises.
$ ps aux | grep nginx
Vous devriez maintenant voir clairement l'emplacement de votre démon Nginx. Ceci est très utile pour les développeurs qui ne disposent pas de privilèges de bas niveau sur la machine serveur.
17. Localiser le PID Nginx
Le PID ou Process ID est un numéro unique utilisé pour distinguer les processus sur les systèmes Linux et Unix. Nous pouvons envoyer divers signaux à notre serveur Nginx en utilisant le PID approprié. Ce PID peut être trouvé en utilisant l'une des commandes suivantes.
$ ps aux | grep [n]ginx $ pgrep nginx $ cat /run/nginx.pid
Nous pouvons donc utiliser pgrep ou la commande vanilla grep en conjonction avec ps. Ne vous inquiétez pas si vous ne comprenez pas comment fonctionne "grep". Nous avons déjà publié un guide gourmand en ressources sur les commandes grep Linux.
18. Rechercher les fichiers journaux
Les fichiers journaux contiennent de nombreuses informations précieuses pour les administrateurs système et les développeurs. Nginx a deux fichiers journaux par défaut composés de access.log et error.log documents. Ceux-ci se trouvent dans /var/log et peuvent être consultés à l'aide de la commande suivante.
$ ls /var/log/nginx/*.log
Vous devriez maintenant voir les fichiers journaux mentionnés ci-dessus. Comme leur nom l'indique, access.log contient des informations concernant les visiteurs de votre site et error.log contient des avertissements/détails sur les erreurs de configuration. Cependant, vous devrez activer ces deux journaux à partir de votre fichier de configuration Nginx avant de pouvoir les utiliser.
19. Définir les hôtes virtuels
Les hôtes virtuels permettent aux administrateurs de serveur d'exécuter plusieurs sites Web sur une seule machine serveur. Ceci est souvent utile car vous pouvez partager vos processus informatiques pour exécuter plusieurs sites en même temps. Cependant, le terme hôte virtuel est généralement associé aux serveurs Apache. Ils sont connus sous le nom de "blocs de serveur ” dans le monde Nginx.
$ sudo ln -s /etc/nginx/sites-available/YOURSITE.com /etc/nginx/sites-enabled/YOURSITE.com
Vous pouvez facilement activer des hôtes virtuels sur un serveur Nginx à l'aide de ce simple lien symbolique. Supprimez simplement le lien symbolique si vous souhaitez désactiver les hôtes virtuels.
20. Afficher les modules Nginx compilés
Comme vous l'avez vu dans certaines commandes Nginx précédentes, lorsque vous installez le démon, certains modules essentiels sont également installés. Nous pouvons facilement visualiser ces modules Nginx en utilisant la commande ci-dessous.
$ sudo 2>&1 nginx -V | tr -- - '\n' | grep _module
Cette commande exploite plusieurs outils de ligne de commande Linux et filtre les informations non pertinentes pour afficher uniquement les modules. Étant donné que Nginx a une pléthore de modules, cette commande peut être utile pour vérifier quels modules sont compilés pour votre serveur.
21. Activer/Désactiver le service Nginx
L'activation du service Nginx permet au serveur de démarrer automatiquement au démarrage. Il est essentiel pour les serveurs dédiés car sinon, les requêtes des utilisateurs pourraient être interrompues. Nous pouvons très facilement permettre à Nginx de démarrer automatiquement à l'aide de la commande ci-dessous.
$ sudo service nginx enable # System V Init $ sudo systemctl enable nginx # systemd-based systems
Ces commandes simples mais efficaces permettront de réduire au maximum les temps d'arrêt de votre serveur. Vous pouvez également désactiver le démarrage automatique si vous le souhaitez. Utilisez simplement l'une des commandes suivantes.
$ sudo update-rc.d -f nginx disable $ sudo systemctl disable nginx
22. Mettre à niveau Nginx à la volée
Nginx permet aux administrateurs de mettre à jour le fichier binaire et/ou de configuration à la volée. Cela signifie que vos demandes client ne seront pas interrompues en raison des mises à niveau du serveur. Pour ce faire, nous devons d'abord localiser le PID du processus maître Nginx. Nous pouvons le faire en utilisant une commande simple que nous avons déjà démontrée.
$ cat /run/nginx.pid
Votre nouveau binaire Nginx devrait être prêt maintenant. Générez un nouvel ensemble de processus maître/travailleur Nginx qui utilisent le nouveau binaire via la commande ci-dessous.
$ sudo kill -s USR2 `cat /run/nginx.pid`
Tuez maintenant les processus de travail utilisés par le premier processus maître à l'aide de la commande suivante.
$ sudo kill -s WINCH `cat /run/nginx.pid.oldbin`
Suivez-le en tuant l'ancien processus maître.
$ sudo kill -s QUIT `cat /run/nginx.pid.oldbin`
23. Configurer Nginx dans Chroot Jail
Une prison chroot pour votre serveur Nginx fournira une couche de sécurité supplémentaire en cas d'effraction potentielle. Les administrateurs utilisent souvent cette technique pour s'assurer que leurs serveurs sont isolés et sécurisés dans une petite section du système de fichiers Linux. Utilisez les commandes suivantes pour configurer votre serveur Nginx dans une prison chroot.
# D=/nginx # mkdir -p $D
# mkdir -p $D/etc # mkdir -p $D/dev # mkdir -p $D/var # mkdir -p $D/usr # mkdir -p $D/usr/local/nginx # mkdir -p $D/tmp # chmod 1777 $D/tmp # mkdir -p $D/var/tmp # chmod 1777 $D/var/tmp # mkdir -p $D/lib64
# ls -l /dev/{null,random,urandom}
# /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx
Vous devrez les exécuter en tant que root. Découvrez maintenant les bibliothèques partagées à l'aide de la commande ci-dessous.
# ldd /usr/local/nginx/sbin/nginx
Copiez toutes les bibliothèques une par une, comme indiqué ci-dessous.
# cp /lib64/libpcre.so.0 $D/lib64
Vous devrez également copier /etc et quelques autres répertoires également.
# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc # cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc
Votre prison chroot est maintenant prête pour Nginx. Tuez simplement l'ancien service et démarrez le nouveau en utilisant la commande suivante.
# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t
24. Exécutez Nginx dans Docker
Les conteneurs Docker sont devenus extrêmement populaires en raison de leur flexibilité et de leurs performances robustes. Vous pouvez facilement créer et exécuter votre serveur Web Nginx à partir d'un conteneur Docker. La commande suivante extrait l'image Nginx officielle et crée une instance de serveur en utilisant la configuration par défaut.
$ docker run --name nginx-server -P -d nginx
Vous pouvez maintenir un stockage persistant à l'aide de la commande simple suivante.
$ sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \ -v /var/nginx/conf:/etc/nginx:ro -P -d nginx
Vous pouvez trouver des commandes Docker plus utiles dans cet article. Jetez-y un coup d'œil si vous recherchez des informations spécifiques à Docker.
25. Exécutez Nginx dans LXD
LXD est salué comme le conteneur Linux de nouvelle génération et offre un ensemble étonnant de fonctionnalités. Vous pouvez également utiliser Nginx via des conteneurs LXD. Jetez un œil aux commandes Nginx suivantes pour LXD.
$ sudo lxc launch ubuntu:18.04 nginx-server
$ sudo lxc exec nginx-server -- sudo --user ubuntu --login $ sudo apt update $ sudo apt install -y nginx $ sudo systemctl reload nginx
Tout d'abord, nous avons créé un conteneur appelé nginx-server, puis démarré un shell dans ce conteneur. Ensuite, nous avons mis à jour la liste des packages et installé le serveur Web Nginx dans ce conteneur. La dernière commande recharge simplement le serveur.
Fin des pensées
Il existe de nombreuses fonctionnalités surprenantes offertes par Nginx, et les nouveaux utilisateurs sont souvent submergés par ses capacités. Heureusement, vous pouvez acquérir une confiance énorme si vous ne connaissez que quelques commandes Nginx de base. C'est pourquoi nous avons pris la liberté de vous présenter ces commandes impressionnantes. Nous avons couvert non seulement les commandes de base, mais également certaines astuces de ligne de commande avancées et plus puissantes. J'espère que vous vous sentirez plus en autorité sur vos compétences Nginx une fois que vous serez habitué à ces commandes. Faites-nous part de vos réflexions dans la section des commentaires ci-dessous et continuez à visiter pour plus de guides sur les serveurs Linux.