Erreurs courantes de connexion Nginx
Introduction
Nginx est un serveur web populaire qui peut héberger de nombreux sites volumineux et à fort trafic sur Internet. Les erreurs de connexion Nginx peuvent être difficiles à déboguer car il existe de nombreuses causes et solutions possibles. De plus, il n'y a pas toujours beaucoup d'indices pour vous orienter dans la bonne direction afin de corriger l'erreur. Étant donné que la nature de ces erreurs implique l'échec de l'établissement d'une connexion avec Nginx dès le départ, ces erreurs apparaissent souvent au niveau du navigateur plutôt qu'en tant qu'erreur spécifique au niveau de Nginx. En fait, de nombreuses erreurs courantes avec Nginx concernent un aspect de la connexion, tel que les ports ou les pare-feu.
Les exemples de ce guide ont été testés sur un serveur Ubuntu 22.04 mais devraient être applicables à la plupart des installations Nginx. La plupart de ces erreurs peuvent être résolues dans le cadre du fichier de configuration standardisé de Nginx, bien que les répertoires et les chemins puissent légèrement différer.
Dans ce tutoriel, vous apprendrez ce que signifie une erreur de connexion du navigateur pour votre serveur web Nginx et les différentes étapes que vous pouvez suivre pour identifier et corriger le problème afin de remettre votre serveur en fonctionnement.
Vérification de votre journal d'erreurs Nginx
Les erreurs et solutions présentées dans ce tutoriel sont des cas courants mais non exhaustifs. En raison de la nature des erreurs de syntaxe qui perturbent la structure de ce que Nginx reconnaît comme des instructions valides, les erreurs suivantes ne sont que des indications sur la manière dont Nginx réagit. Souvent, une erreur peut en entraîner une autre, et une erreur peut être le symptôme d’un problème plus large ou distinct. Votre situation et configuration spécifiques peuvent varier.
Veuillez noter que vous pouvez toujours vous référer au journal des erreurs Nginx pour consulter une liste des erreurs en cours :
sudo cat /var/log/nginx/error.logRésolution de l’erreur « Ce site est inaccessible »
En naviguant en ligne, vous avez probablement rencontré une page web qui affiche quelque chose comme Le site est inaccessible. Il peut y avoir de nombreuses causes à ce problème, mais ce tutoriel se concentrera sur les erreurs courantes du point de vue d'un utilisateur qui configure Nginx. Parfois, actualiser votre navigateur peut résoudre le problème, mais dans le cas de votre propre serveur web, d'autres facteurs peuvent affecter la connexion de votre serveur en arrière-plan.
Voici un exemple du message d'erreur que vous pouvez recevoir sur votre navigateur web :
Avant de commencer, discutons de ce que cette erreur indique à propos de votre serveur web. Tout d'abord, l'adresse example.com met trop de temps à répondre, c'est pourquoi le ERR_CONNECTION_TIMED_OUT est mentionné à la fin du message. Cependant, rappelez-vous qu'il s'agit d'une erreur au niveau du navigateur, et non d'une erreur directe de votre serveur Nginx. Ce message d'erreur peut être interprété comme la cause possible pour laquelle la connexion à votre serveur ne peut pas être établie. De plus, les solutions suggérées ici sont proposées du point de vue d'un utilisateur final côté client.
Encore une fois, il s'agit d'un scénario où vous exécutez votre propre serveur web, et non de visiter un site web quelconque sur Internet. Pour diagnostiquer réellement votre problème, vous devrez inspecter vous-même votre configuration Nginx dans un processus d'élimination à l'aide d'une liste de causes probables.
Puisque vous utilisez Nginx, vous pouvez évaluer plusieurs éléments qui pourraient causer cette erreur en exécutant certaines commandes et en vérifiant votre pare-feu et vos paramètres de configuration.
Vérification que votre serveur Web Nginx est actif
La première étape que vous pouvez suivre consiste à vérifier que Nginx est actif sur votre système et qu'il n'y a eu aucun problème d'installation. Vous pouvez vérifier cela en exécutant le système d'init systemd pour vérifier le statut du service Nginx en cours d'exécution sur votre machine :
systemctl status nginxSi votre serveur web Nginx fonctionne correctement, vous recevez la sortie suivante :
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enable>
Active: active (running) since Thu 2022-11-03 16:37:22 UTC; 1 week 4 days >
Docs: man:nginx(8)
Main PID: 3253 (nginx)
Tasks: 2 (limit: 1116)
Memory: 3.7M
CPU: 1.250s
CGroup: /system.slice/nginx.service
├─3253 "nginx: master process /usr/sbin/nginx -g daemon on; master>
└─3254 "nginx: worker process"Dans la sortie, il y a une ligne qui dit Active et indique si le serveur web fonctionne ou non. Dans cet exemple, il est opérationnel et en cours d'exécution. S'il ne l'était pas, cette ligne afficherait inactive (dead).
Remarque : Si votre sortie indique inactive (dead), vous pouvez essayer de redémarrer votre serveur avec sudo systemctl start nginx. Si vous avez récemment effectué des modifications de configuration, assurez-vous de les recharger en exécutant sudo systemctl reload nginx, puis vérifiez à nouveau le statut. Vous pouvez en savoir plus à ce sujet dans notre tutoriel qui explique comment gérer différents processus Nginx.
Une fois que vous avez confirmé que votre service Nginx fonctionne, vous pouvez saisir à nouveau l'adresse de votre serveur dans le navigateur comme http://example.com pour vérifier si le problème de connexion persiste. Si vous n'êtes pas certain de votre adresse IP, vous pouvez utiliser l'outil icanhazip.com pour localiser votre adresse IP :
curl -4 icanhazip.comSi votre site reste inaccessible à ce stade, l'étape suivante consiste à vérifier les paramètres de votre pare-feu.
Vérification et ajustement de vos paramètres de pare-feu
Une autre étape que vous pouvez entreprendre pour vérifier la connexion de votre serveur web est de vérifier que les paramètres de votre pare-feu sont correctement configurés pour accepter les requêtes via la connexion de port appropriée. Si ce n’est pas le cas, vous devrez ajuster les paramètres de votre pare-feu pour permettre les connexions au port. Par défaut, un serveur web Nginx écoutera toutes les requêtes entrantes sur le port 80, et avec des certificats SSL configurés, il écoute les connexions sécurisées sur le port 443. Pour les besoins de ce tutoriel, cependant, nous nous concentrerons sur le port par défaut 80.
Dans cet exemple, nous utilisons Ubuntu 22.04 et le pare-feu simple, UFW. Notez que cela peut être différent en fonction de votre distribution spécifique. Commencez par vérifier les paramètres actuels de votre pare-feu. Gardez à l'esprit que vous devrez exécuter la commande suivante avec les privilèges de l'utilisateur root. Ici, nous recommandons d'utiliser un utilisateur avec des privilèges sudo pour ce faire :
sudo ufw statusStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)Cette sortie liste les connexions de ports ouvertes actuelles sur cette machine. Malheureusement, le port 80 n'est pas dans la liste et doit donc être ajouté pour permettre l'accès à Nginx. Si vous n'êtes pas sûr des configurations d'applications disponibles, vous pouvez exécuter ufw app list :
sudo ufw app listAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHDepuis que Nginx est installé avec succès, cela énumère divers profils Nginx disponibles pour la configuration. Voici un aperçu rapide de ce que chacun de ces profils signifie :
Nginx Full: ouvre à la fois les ports80(trafic normal non chiffré) et443(trafic chiffré TLS/SSL)Nginx HTTP: ouvre uniquement le port80Nginx HTTPS: ouvre uniquement le port443
Puisque vous n'avez besoin d'ouvrir que le port 80 pour que votre connexion soit configurée correctement, vous pouvez ajouter l'application Nginx HTTP avec la commande suivante :
sudo ufw allow 'Nginx HTTP'Remarque : Il est recommandé, lors de l'ajustement des paramètres de votre pare-feu, d'activer le profil le plus restrictif qui permet le trafic que vous avez configuré. Cela dépendra de vos besoins. Dans cet exemple, nous permettons le trafic pour Nginx HTTP sur le port 80, mais si vous souhaitez en savoir plus sur la configuration pour Nginx HTTPS sur le port 443, vous pouvez en lire davantage dans notre tutoriel sur la sécurisation de Nginx avec Let’s Encrypt.
Si cette commande réussit, elle renverra une sortie de Règle ajoutée. Pour confirmer que l'application Nginx HTTP a été ajoutée à la liste, vérifiez à nouveau le statut avec sudo ufw status :
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Cette sortie liste maintenant l'application Nginx HTTP qui a été ajoutée et le port 80 est ouvert pour recevoir des connexions.
Vérification de votre fichier de configuration Nginx
Avant de tester votre navigateur web, il est recommandé de vérifier vos paramètres de configuration pour vous assurer que le bloc de domaine de votre serveur est configuré pour écouter sur le port 80. Définir le port et l'adresse IP appropriés dans votre configuration Nginx est essentiel et doit être associé au port ouvert correspondant dans votre pare-feu. Si un composant manque, la connexion échouera.
Vous pouvez ouvrir votre fichier de configuration Nginx dans votre éditeur de texte préféré. Ici, nous utiliserons nano :
sudo nano /etc/nginx/sites-available/example.comUne fois le fichier ouvert, les premières lignes se composent de la directive listen :
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}La directive listen spécifie le port à partir duquel le serveur peut accepter des requêtes. De plus, la notation entre crochets listen [::] représente les adresses IPv6. Si vous le souhaitez, vous pouvez également inclure vos informations d'adresse IP après la directive listen. Cependant, dans cet exemple particulier, la connexion au domaine est représentée par les directives root et server_name. Comme mentionné précédemment, vous devez vous assurer que les informations de votre domaine ou de votre adresse IP sont exactes dans ce fichier de configuration, sinon cela ne fonctionnera pas. Par conséquent, vérifiez bien que les directives root et server_name sont exactes pour le domaine auquel vous souhaitez vous connecter.
Après avoir confirmé que la configuration de la directive listen est correctement réglée sur le port 80, vous pouvez sauvegarder et fermer le fichier. Si vous utilisez nano, vous pouvez le faire en appuyant sur CTRL + X, puis Y et ENTRÉE.
Pour vous assurer que votre fichier de configuration est exempt de toute erreur de syntaxe, exécutez ce qui suit :
sudo nginx -tVeuillez noter que si vous avez apporté des modifications à votre fichier de configuration et n'avez reçu aucune erreur de syntaxe après avoir exécuté cette commande, assurez-vous de redémarrer Nginx pour activer vos modifications avec sudo systemctl restart nginx.
Après avoir fait cela, ouvrez votre navigateur et accédez à http://example.com. Si vous recevez la page web suivante, alors vos paramètres de pare-feu ajustés ont été efficaces pour que le port 80 accepte les requêtes :
Cette page web confirme que votre serveur web Nginx est installé et fonctionne correctement.
Conclusion
Dans ce tutoriel, vous avez appris comment vérifier si votre service Nginx est actif ainsi que les connexions de pare-feu et de ports qui peuvent causer votre erreur courante Ce site est inaccessible lors de l'utilisation d'un serveur web Nginx. Si vous souhaitez en savoir plus sur Nginx, vous pouvez consulter notre page Communauté taguée, ou commencer à apprendre comment installer Nginx sur Ubuntu 22.04.


