GNU/Linux >> Tutoriels Linux >  >> Linux

25 commandes Nginx indispensables pour les développeurs et les administrateurs

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.


Linux
  1. Meilleures pratiques DNS pour la sécurité et les performances

  2. Guide d'exécution d'un proxy inverse pour HTTP(S), SSH et MySQL/MariaDB à l'aide de NGINX

  3. 25 commandes Vim essentielles pour la navigation et l'édition

  4. 20 exemples de commandes OpenSSL que vous devez connaître

  5. Rechercher les mises à jour Windows dans Windows Server 2016 et 2019

50 commandes Nmap essentielles pour les administrateurs système

40 commandes git utiles pour les administrateurs et les développeurs Linux

20 choses essentielles à savoir si vous êtes sur le serveur Web Nginx

Les 5 meilleures distributions Linux pour les développeurs et les programmeurs

Top 50+ des commandes Linux que vous DEVEZ connaître

Comment configurer un serveur NGINX RTMP pour le streaming