Comment résoudre l'erreur Nginx '(13: Permission denied) lors de la connexion à l'amont'

Publié 27 août 2024

Problème : Erreur Nginx '(13: Permission refusée)'

Lorsque vous utilisez Nginx comme serveur web ou proxy inverse, vous pouvez rencontrer le message d'erreur "(13: Permission refusée) lors de la connexion au serveur en amont." Cette erreur survient souvent lorsque Nginx n'a pas les permissions nécessaires pour accéder ou communiquer avec le serveur en amont. Cela peut affecter le fonctionnement de votre site web et empêcher le contenu d'atteindre les utilisateurs.

6 Solutions pour résoudre le problème de permission refusée de Nginx

1. Vérifier les permissions de l'utilisateur Nginx

Pour corriger l'erreur de permission refusée de Nginx, vérifiez les permissions de l'utilisateur Nginx. Examinez le fichier Nginx.conf pour voir les paramètres d'utilisateur et de groupe. Assurez-vous que l'utilisateur Nginx peut accéder aux fichiers et répertoires. Vous devrez peut-être modifier les permissions des fichiers et répertoires avec la commande chmod.

2. Examiner les paramètres SELinux

SELinux peut empêcher Nginx d'accéder aux fichiers ou d'établir des connexions réseau. Vérifiez l'état de SELinux et modifiez les valeurs booléennes si nécessaire. Utilisez la commande 'setsebool' pour changer ces paramètres. Vous pouvez activer la valeur booléenne SELinux pour la connexion réseau httpd avec :

setsebool httpd_can_network_connect on -p

3. Revoir les fichiers de configuration Nginx

Vérifiez votre fichier Nginx.conf pour détecter d'éventuelles erreurs. Examinez les paramètres du serveur en amont. Assurez-vous que tous les chemins et adresses de serveur sont corrects et que Nginx peut accéder à ces ressources.

4. Analyser les journaux d'erreurs Nginx

Les journaux d'erreurs Nginx peuvent vous aider à identifier le problème de permission refusée. Consultez les journaux d'erreurs, généralement situés dans /var/log/nginx/error.log, pour trouver les messages de permission refusée. Utilisez la commande grep pour rechercher ces erreurs :

grep denied /var/log/nginx/error.log

5. Examiner les règles du pare-feu

Votre pare-feu pourrait bloquer les connexions Nginx. Vérifiez vos règles de pare-feu et assurez-vous qu'elles permettent à Nginx de se connecter aux ports et adresses IP nécessaires. Vous devrez peut-être ajouter de nouvelles règles ou modifier les existantes pour donner à Nginx l'accès approprié.

6. Vérifier la disponibilité du serveur en amont

Assurez-vous que vos serveurs en amont sont opérationnels et accessibles. Essayez de vous connecter à ces serveurs depuis votre serveur Nginx pour éliminer les problèmes de réseau ou de configuration. Vous pouvez utiliser telnet ou curl pour tester ces connexions et vous assurer que les serveurs en amont répondent.

Si vous rencontrez toujours des problèmes, vous pourriez voir une erreur 502 Bad Gateway lors de la connexion au serveur en amont. Dans ce cas, vérifiez votre serveur d'application et assurez-vous qu'il fonctionne et est configuré correctement.

N'oubliez pas que si vous modifiez les paramètres SELinux, vous devrez peut-être exécuter :

audit2allow -m mynginx
sudo semodule -i mynginx.pp

Cela crée et installe un module de politique personnalisé basé sur les journaux d'audit.

Étapes supplémentaires de dépannage pour les erreurs de permission refusée de Nginx

Utilisation d'audit2allow pour générer des politiques SELinux

L'outil audit2allow aide à créer des politiques SELinux lorsque les politiques standard ne fonctionnent pas. Pour l'utiliser :

  1. Vérifiez les journaux SELinux pour les actions refusées :

    grep "denied" /var/log/audit/audit.log
  2. Utilisez audit2allow pour générer une politique :

    audit2allow -m mynginx sudo semodule
  3. Appliquez la nouvelle politique :

    mynginx sudo semodule -i mynginx.pp

Ce processus crée et installe un module SELinux basé sur les actions récemment refusées.

Ajustement de la propriété et des permissions des fichiers

Une propriété et des permissions de fichiers correctes aident à résoudre les problèmes de permission Nginx :

  1. Définissez la propriété des fichiers et répertoires Nginx :

    chown -R nginx:nginx /var/www/html
  2. Définissez les permissions :

    chmod 755 /var/www/html
    chmod 644 /var/www/html/*

Ces commandes donnent à l'utilisateur et au groupe Nginx la propriété des fichiers web et définissent les permissions de lecture, écriture et exécution. Modifiez les chemins selon votre configuration.