Nginx servir des fichiers statiques et a obtenu 403 forbidden
Veux juste aider quelqu'un. oui ,vous voulez juste pour servir les fichiers statiques à l'aide de nginx, et vous avez tout droit dans nginx.conf:
location /static {
autoindex on;
#root /root/downloads/boxes/;
alias /root/downloads/boxes/;
}
Mais , en fin de compte , vous avez échoué. Vous avez "403 forbidden" à partir du navigateur...
----------------------------------------La Réponse Ci-Dessous:----------------------------------------
La Solution est très Simple:
Voie 1 : Exécution de nginx en tant que l'utilisateur en tant que '/root/téléchargements/boîtes/' propriétaire
Dans nginx.conf :
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
OUI, dans la première ligne "#utilisateur noboy;" , il suffit de supprimer "#" , et le changement "personne ne" à votre propre nom d'utilisateur de Linux/OS X, j'.e changement de "racine" pour le test. Le redémarrage de nginx.
Attention , Vous feriez mieux de ne pas exécuter nginx comme racine! Ici juste pour le test, c'est dangereux pour le Hacker.
Pour plus d'information , voir nginx (moteur X) – Ce une Douleur dans le CUL! [13: Permission denied]
Chemin 2 : Modifier '/root/téléchargements/boîtes/' propriétaire 'www-data' ou 'personne'
Dans Terminal:
ps aux | grep nginx
Obtenir le nom d'utilisateur de l'exécution de nginx . Il devrait être 'www-data' ou 'nobody' déterminé par la version de nginx. Ensuite frappé dans le Terminal(utiliser 'www-data' par exemple):
chown -R www-data:www-data /root/downloads/boxes/
------------------------------Une Chose Plus Importante Est:------------------------------
Ces répertoires parents "/", "/root", "/root/téléchargements" devrait donner à l'exécution(x) l'autorisation de 'www-data' ou 'nobody'. c'est à dire
ls -al /root
chmod o+x /root
chmod o+x /root/downloads
Pour plus d'information , voir La résolution "403 Forbidden" erreur et Nginx 403 interdit pour tous les fichiers
- vous pouvez également donner les fichiers d'autorisation pour le groupe de nginx est à, qui est ce qui est fait habituellement, et aussi un peu plus logique
- Vérifier ma réponse
- je suis nouveau dans stackoverflow aussi, désolé pour le précédent commentaire, oui , je l'ai fait suite à vous répondre, mais j'ai échoué encore. je n'ai changé de propriétaire du fichier , mais le navigateur de me montrer la "403 forbidden".
- avez-vous redémarrer nginx? aussi, nginx est un journal des erreurs de fichiers (généralement dans
/var/log/nginx/
) où vous pouvez trouver de plus amples informations, vérifier l'erreur et du journal des accès par exemple. BTW, peut-être que vous devriez commentaire sur ma réponse au lieu de votre question. user root
a parfaitement fonctionné pour moi sur ma machine de développement- hey man , faire attention à la "racine" , si un hacker hack vous nginx serveur racine sera le hacker .
- oh mon dieu, je n'avais pas pensé à ça! 😡
- Ne pas exécuter de nginx en tant que root s'il vous plaît!
- je vous remercie. Je fais le vœu de faire "avez-vous redémarrer nginx?" ma première étape
Vous devez vous connecter pour publier un commentaire.
Vous devriez donner nginx autorisations pour lire le fichier. Cela signifie que vous devez donner à l'utilisateur qui exécute le processus de nginx autorisations pour lire le fichier.
Cet utilisateur qui exécute le processus de nginx est configurable avec le
user
directive dans la config nginx, généralement situé quelque part sur le haut denginx.conf
:http://wiki.nginx.org/CoreModule#user
Le deuxième argument que vous donnez à
user
est le groupe, mais si vous ne spécifiez pas, il utilise le même que celui de l'utilisateur, donc, dans mon exemple, l'utilisateur et le groupe, les deux sontwww-data
.Maintenant les fichiers que vous voulez servir avec nginx doit avoir les autorisations correctes. Nginx doit disposer d'autorisations pour lire les fichiers. Vous pouvez donner le groupe
www-data
autorisations en lecture à un fichier comme ceci:http://linux.die.net/man/1/chown
avec
chown
vous pouvez changer l'utilisateur et le groupe propriétaire d'un fichier. Dans cette commande j'ai seulement changer de groupe, si vous voulez changer l'user trop vous spécifiez le nom d'utilisateur AVANT la virgule, commechown www-data:www-data my-file.html
. Mais la définition d'autorisations de groupe correct devrait être suffisant pour nginx pour être en mesure de lire le fichier.user root
fait le problème s'en aller et de ne jamais, jamais montrer son visage à nouveau. (l'hyperventilation peut commencer! 😉Depuis Nginx est de la manipulation de la statique des fichiers directement, il a besoin d'un accès pour les répertoires appropriés. Nous avons besoin de donner les autorisations d'exécutables pour notre répertoire home.
La façon la plus sûre à faire est d'ajouter la Nginx utilisateur de notre propre groupe d'utilisateurs. Nous pouvons ensuite ajouter le fichier exécutable de l'autorisation pour le groupe de propriétaires de notre répertoire home, donnant juste assez de l'accès pour Nginx pour servir les fichiers:
pour la accepté de répondre à
pour changer le groupe propriétaire de tous les fichiers dans ce dossier
Après de creuser très utile réponses décidé de rassembler tout ce qui a trait aux autorisations comme une recette. Plus précisément, la solution la plus simple avec le maximum de sécurité (=autorisations minimales).
admin
, qui est, elle est propriétaire de site dir et tout à l'intérieur. Nous ne pas souhaitez exécuter nginx en tant que cet utilisateur (trop d'autorisations). C'est OK pour le test, pas pour la prod.nginx
, qui est, config contient la ligneuser nginx
nginx
est dans le groupe avec le même nom:nginx
.nginx
sans changer la propriété de fichier. Ce qui semble être la plus sûre de naïf options.Afin de servir les fichiers statiques, le minimum autorisations nécessaires dans la hiérarchie des dossiers (voir les permissions de groupe) devrait ressembler à ceci (utilisez la commande
namei -l /home/admin/WebProject/site/static/hmenu.css
):dr-xr-xr-x root root /
drwxr-xr-x root root maison
drwxr-x--- nginx admin admin
drwx--x--- nginx admin WebProject
drwx--x--- nginx admin du site
drwx--x--- nginx admin statique
-rwxr----- nginx admin hmenu.css
Prochaine, comment obtenir cette belle image? Pour modifier la propriété de groupe pour dirs, nous appliquons d'abord
sudo chown :nginx /home/admin/WebProject/site/static
et puis répétez la commande de décapage dirs à partir de la droite, un par un.Pour modifier les autorisations pour dirs, nous appliquons
sudo chmod g+x /home/admin/WebProject/site/static
et de nouveau la bande dirs.Changer de groupe pour les fichiers dans le /static dir:
sudo chown -R :nginx /home/admin/WebProject/site/static
Enfin, de modifier les autorisations pour les fichiers dans le /static dir:
sudo chmod g+r /home/admin/WebProject/site/static/*
(Bien sûr, on peut créer un groupe dédié, et de modifier le nom d'utilisateur, mais ce serait occulter la narration avec des détails sans importance.)
Réglage de la racine de l'utilisateur dans nginx peut être vraiment dangereux. Avoir de définir des autorisations à tous les fichiers de la hiérarchie peut être lourd (imaginez le dossier du chemin d'accès complet est sous plus de 10 sous-dossiers).
Ce que je fais est de miroir le dossier que vous souhaitez partager, sous /usr/share/nginx/any_folder_name avec des autorisations pour nginx est configuré à l'utilisateur (généralement de www-data). Que vous pouvez faire avec bindfs.
Dans votre cas, je voudrais faire:
Il va monter /root/téléchargements/boîtes dans /usr/share/nginx/root_boxes avec toutes les autorisations pour l'utilisateur www-data. Maintenant, vous définissez le chemin de votre emplacement bloc config