Dépannage de base de Nginx
Cet article présente un dépannage de base pour Nginx, l'un des serveurs HTTP les plus populaires. Le but est de corriger certaines des erreurs les plus courantes qui peuvent être présentes dans votre configuration Nginx.
Rechercher des erreurs de syntaxe ou des avertissements dans la configuration
Grâce à une simple commande, vous pouvez vérifier l'état du fichier de configuration Nginx :$ sudo systemctl config nginx
La sortie montrera si le fichier de configuration est correct ou, si ce n'est pas le cas, elle montrera le fichier et la ligne où se trouve le problème.
$ sudo systemctl config nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl config nginx
"worker_connections" directive is not allowed here in /etc/nginx/nginx.conf:12
nginx: configuration file /etc/nginx/nginx.conf test failed
Si vous n'avez pas la commande de service disponible dans votre système, vous pouvez choisir d'utiliser le -t
Paramètre Nginx, qui teste également la syntaxe correcte du fichier de configuration, puis tente d'ouvrir les fichiers auxquels il est fait référence dans la configuration.$ sudo nginx -t
Vérifier que Nginx est en cours d'exécution
Pour vérifier l'état du service Nginx, vous pouvez utiliser la commande suivante :$ sudo systemctl status nginx
Vous pouvez également utiliser les commandes génériques pour valider le statut du service :$ sudo /etc/init.d/nginx status
Vérifiez que les ports sont ouverts et que le service écoute
Vérifiez que les ports nécessaires sont ouverts et pour vérifier que le service Nginx les écoute, vous pouvez utiliser le lsof
commande, idéalement dans les ports par défaut 80 et 443.
$ sudo lsof -i :80 -s TCP:LISTEN
nginx 1305 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1305 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
Vérifier si Nginx traite les requêtes
Si Nginx écoute réellement les ports appropriés, l'étape suivante consiste à vérifier s'il traite les demandes, ce qui peut être fait en utilisant le curl
outil en utilisant l'adresse IP, l'URL ou l'hôte local si votre configuration écoute sur l'hôte local :
$ curl -i http://127.0.0.1/nginx_status
HTTP/1.1 200 OK
Server: nginx/1.11.1
Date: Wed, 08 Aug 2021 11:36:43 GMT
Content-Type: text/plain
Content-Length: 97
Connection: keep-alive
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
Vérifier les journaux
Vérifiez les derniers journaux du service Nginx.$ sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Vérifier les autorisations
Assurez-vous que Nginx dispose des autorisations appropriées pour accéder aux fichiers nécessaires.
$ namei -om /usr/share/nginx/html/index.html
f: /usr/share/nginx/html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html
Recharger le service
Si vous avez apporté des modifications au fichier de configuration qui n'ont pas été appliquées, vous pouvez recharger le service, démarrer de nouveaux processus Nginx et arrêter doucement les anciens travailleurs pour éviter un arrêt rapide et agressif.$ sudo service nginx reload
Pour l'arrêt rapide qui n'attend pas la fin des processus, vous pouvez redémarrer Nginx.$ sudo service nginx restart
Activer le mode débogage
Dans le fichier de configuration (généralement /etc/nginx/nginx.conf
) modifier le niveau de journalisation pour error_log
instruction :
server {
# stuff
error_log /var/logs/nginx/error.log debug;
# stuff
}
Vous pouvez déboguer les règles de réécriture pour voir les résultats du traitement dans le journal des erreurs :
server {
# stuff
error_log /var/logs/nginx/error.log notice;
rewrite_log on;
# stuff
}
Vérifier la résolution DNS
Règles sur /etc/hosts
ont la priorité sur les résolutions DNS. Vous pouvez vérifier les enregistrements DNS avec :$ host -t A website.com
Vous pouvez également vérifier la résolution DNS complète :$ dig +trace website.com
Conclusions
Voici quelques étapes de dépannage de base pour certaines des erreurs les plus courantes avec Nginx. Vous pouvez également vous fier à la documentation si ces étapes ne résolvent pas votre problème, en profitant de la grande popularité de Nginx.