Comment résoudre l'erreur 403 Forbidden de Nginx lors de la diffusion de fichiers statiques ?

Publié 17 octobre 2024

Problème : Erreur 403 Forbidden de Nginx pour les fichiers statiques

L'erreur 403 Forbidden de Nginx se produit lors de la tentative de diffusion de fichiers statiques, bloquant l'accès aux ressources du site web. Ce problème peut affecter le fonctionnement d'un site, car il empêche les utilisateurs de voir les images, les feuilles de style ou tout autre contenu statique.

Diagnostic du problème

Vérification de la configuration Nginx

Pour résoudre l'erreur 403 Forbidden de Nginx, examinez votre configuration Nginx. Vérifiez le bloc location pour les fichiers statiques dans votre fichier nginx.conf ou dans le fichier du bloc server. Ce bloc définit comment Nginx gère les requêtes pour le contenu statique.

Exemple d'un bloc location :

location /static {
    root /var/www/monsite;
    try_files $uri =404;
}

Vérifiez si la directive root ou alias est correctement configurée. La directive root définit le répertoire de base pour les requêtes, tandis que la directive alias définit un chemin différent pour l'emplacement spécifié.

Conseil: Dépannage de la configuration Nginx

Utilisez la commande nginx -t pour tester la syntaxe de votre configuration Nginx. Cette commande vérifie les fichiers de configuration et signale tout problème, vous aidant à identifier et corriger rapidement les erreurs.

Examen des permissions des fichiers et répertoires

Ensuite, vérifiez les permissions des fichiers et répertoires de votre contenu statique. Utilisez la commande ls -l pour voir la propriété et les permissions des fichiers et répertoires.

Exemple :

ls -l /var/www/monsite/static

Assurez-vous que l'utilisateur Nginx (souvent www-data ou nginx) a un accès en lecture aux fichiers et une permission d'exécution pour les répertoires. La permission d'exécution sur les répertoires permet à l'utilisateur d'accéder au contenu du répertoire.

Pour trouver l'utilisateur Nginx, recherchez la directive user dans votre fichier nginx.conf ou utilisez cette commande :

ps aux | grep nginx

Si les permissions sont incorrectes, vous devrez peut-être les modifier à l'aide des commandes chmod et chown.

Solutions pour corriger l'erreur 403 Forbidden

Ajustement de la configuration de l'utilisateur Nginx

Pour résoudre l'erreur 403 Forbidden, vous devrez peut-être modifier la directive user dans votre fichier nginx.conf. Cette directive définit l'utilisateur sous lequel Nginx s'exécute, affectant son accès aux fichiers et répertoires.

  1. Ouvrez votre fichier nginx.conf (généralement dans /etc/nginx/) :
sudo nano /etc/nginx/nginx.conf
  1. Trouvez la directive user près du haut du fichier. Elle pourrait ressembler à ceci :
user www-data;
  1. Si nécessaire, changez l'utilisateur pour qu'il corresponde au propriétaire de vos fichiers statiques. Par exemple :
user votre_nom_utilisateur;
  1. Sauvegardez le fichier et quittez l'éditeur.

  2. Redémarrez Nginx pour appliquer les changements :

sudo systemctl restart nginx

Conseil: Vérifier l'utilisateur Nginx

Pour vérifier sous quel utilisateur Nginx s'exécute, utilisez la commande :

ps aux | grep nginx

Cela vous montrera les processus exécutant Nginx et l'utilisateur associé à chaque processus.

Correction des permissions des fichiers et répertoires

Ajustez la propriété et les permissions de vos fichiers statiques pour permettre à Nginx d'y accéder :

  1. Changez la propriété des fichiers statiques pour l'utilisateur Nginx :
sudo chown -R nginx:nginx /chemin/vers/vos/fichiers/statiques
  1. Définissez les permissions de lecture et d'exécution :
sudo chmod -R 755 /chemin/vers/vos/fichiers/statiques

Cette commande donne les permissions de lecture et d'exécution au propriétaire, et un accès en lecture seule aux autres.

Mise à jour du bloc location de Nginx

Examinez et corrigez la directive root ou alias dans votre bloc location Nginx :

  1. Ouvrez votre fichier de configuration du bloc server :
sudo nano /etc/nginx/sites-available/votre_site
  1. Trouvez le bloc location pour les fichiers statiques et vérifiez la directive root ou alias :
location /static {
    root /var/www/votre_site;
    # ou
    alias /chemin/vers/vos/fichiers/statiques;
}
  1. Assurez-vous que le chemin vers vos fichiers statiques est correct.

  2. Sauvegardez le fichier et quittez l'éditeur.

  3. Testez la configuration Nginx :

sudo nginx -t
  1. Si le test est réussi, rechargez Nginx :
sudo systemctl reload nginx