J'utilise la configuration par défaut lors de l'ajout du répertoire spécifique avec nginx installé sur ma machine ubuntu 12.04.
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
root /username/test/static;
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
...
...
}
Je veux juste un simple serveur nginx statique pour servir les fichiers de ce répertoire. Cependant, en vérifiant le error.log
je vois
2014/09/10 16:55:16 [crit] 10808#0: *2 stat() "/username/test/static/index.html" failed (13: Permission denied), client:, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "domain"
2014/09/10 16:55:16 [error] 10808#0: *2 rewrite or internal redirection cycle while internally redirecting to "/index.html
Je l' ai déjà fait chown -R www-data:www-data
sur /username/test/static
, je les ai mis à chmod 755
. Je ne sais pas quoi d'autre doit être réglé.
www-data
utilisateur peut accédercd
au/username/test/static
répertoire:sudo -u www-data cd /username/test/static
Réponses:
Nginx fonctionne dans le répertoire, donc si vous ne pouvez pas
cd
accéder à ce répertoire à partir de l'utilisateur nginx, il échouera (tout comme lastat
commande dans votre journal). Assurez-vous que lawww-user
boîte de conservecd
jusqu'au/username/test/static
. Vous pouvez confirmer que l'stat
échouera ou réussira en exécutantDans votre cas, le
/username
répertoire est probablement le problème ici. N'a généralementwww-data
pas d'autorisations surcd
les répertoires personnels des autres utilisateurs.La meilleure solution dans ce cas serait d'ajouter
www-data
auusername
groupe:et assurez-vous que ce
username
groupe peut entrer tous les répertoires le long du chemin:Pour que vos modifications fonctionnent, redémarrez nginx
la source
umask
. Si vous avez besoin d'une solution plus générique, qui ne nécessite paschmod
chaque nouveau répertoire, alors il existe une solution. Cela nécessite une association de groupe inversée (username
auwww-data
groupe) et l'utilisation desetgid
. N'hésitez pas à poster une nouvelle question pour une description plus élaborée et je serai heureux d'y répondre.nginx
utilisateur peut accéder au répertoire de mon site Web, mais il indique toujours l'autorisation refusée sur les journaux d'erreur.J'ai juste eu le même problème sur une box CentOS 7.
Il semble que j'aie touché selinux. Mettre selinux en mode permissif (
setenforce permissive
) a résolu le problème pour le moment. Je vais essayer de revenir avec une solution appropriée.la source
ls -Z myFile.js
affichera le contexte SELinux:-rw-r--r--. nginx nginx unconfined_u:object_r:user_home_t:s0 myFile.js
Utilisezchcon -v --type=httpd_sys_content_t myFile
pour changer le contenu SELinux.sudo setenforce 0
réparé pour moi.SELINUX
valeur endisabled
in/etc/selinux/config
, suivi d'un redémarrage. Lorsqu'il est défini surpermissive
, il peut toujours exécuter des vérifications en arrière-plan (en utilisant un processeur précieux), mais n'entreprendre aucune action.Nginx doit avoir un accès + x sur tous les répertoires menant au répertoire racine du site.
Assurez-vous d'avoir + x sur tous les répertoires dans le chemin menant à la racine du site. Par exemple, si la racine du site est / home / username / siteroot:
la source
Sur CentOS 7.0, j'ai eu ce
Access Deined
problème causé par SELinux et ces étapes ont résolu le problème:Mise à jour: Juste une note de côté de ce que j'ai appris en utilisant les serveurs Linux virtuels de digitalocean, ou comme ils les appellent Droplets . L'utilisation de SELinux nécessite une quantité décente de RAM. C'est très probablement comme si vous ne pourrez pas exécuter et gérer SELinux sur une goutte avec moins de 2 Go de RAM.
la source
setenforce 0
. Cependant, en repensant à ce que fait réellement cette solution, j'ai réalisé que je devais réexécuter les commandes pour mettre à jour les autorisations de l'utilisateur nginx. Cela semblait fonctionner et je pourrais remettre SELinux en application.Vous avez peut-être Linux à sécurité renforcée en cours d'exécution, alors ajoutez une règle pour cela. J'ai eu 13 erreurs d'autorisation, même si les autorisations ont été définies et que l'utilisateur existait.
chcon -Rt httpd_sys_content_t /username/test/static
la source
Symptôme:
Impossible de télécharger des images dans la médiathèque WordPress.
Cause:
(CentOS)
yum update
Erreur:
Solution:
chown -R www-data:www-data /var/lib/nginx
la source
Par défaut, les données statiques, lorsque vous installez le nginx, seront dans / var / www / html. Vous pouvez donc simplement copier votre dossier statique dans / var / html / et définir le
dans ngix.conf (ou / etc / nginx / sites-available / default)
Cela a fonctionné pour moi sur ubuntu mais je suppose que cela ne devrait pas être très différent pour les autres distributions.
J'espère que ça aide.
la source
Changez votre
nginx.conf
user
propriété enwww-static
fichiers owener.la source
J'ai rencontré ce problème, je l'ai résolu pour donner des autorisations à l'utilisateur nginx et au groupe quelque chose comme ceci:
la source
Dans mon cas, le dossier qui servait les fichiers était un lien symbolique vers un autre dossier, réalisé avec
Même si les autorisations (utilisateur et groupe) étaient correctes sur le dossier de destination (le lien symbolique), j'avais toujours l'erreur car Nginx devait également avoir des autorisations sur la hiérarchie du dossier d'origine.
la source
J'ai finalement trouvé mon chemin. En bref, disons que votre nom d'utilisateur est
joe
et que vous détenez un site Web sous votre système de fichiers personnel/home/joe/path/to/website
.Vous devez littéralement dire au système qu'il
nginx
s'agit de votre ami.Placez
nginx
enjoe
groupe:Après cela, si cela ne fonctionne toujours pas, vérifiez le droit d'accès au
/home/joe
répertoire. C'est probablement la raison pour laquelle nginx ne peut pas accéder au fichier car même s'il est votre ami, vous devez maintenant lui ouvrir la porte de votre maison:C'est tout. C'est littéralement tout ce que vous avez à faire pour donner à nginx l'accès à vos fichiers locaux :)
Je ne pense pas qu'il y ait des problèmes de sécurité avec cette méthode car
nginx
c'est la haute autorité et seul un administrateur peut changer le groupe.nginx
peut maintenant lire le contenu desjoe
répertoires. Ce n'est qu'une faille de sécurité si le titulaire dunginx
compte est différent de l'utilisateur à partir duquel vous ouvrez l'accès à l'annuaire, mais dans mon cas, je suis le titulaire des deux parties, c'est-à-dire dans un contexte local.la source
J'ai eu le même problème, j'utilise Plesk Onyx 17 avec Centos7. Je pouvais voir cette erreur dans proxy_error_log sous les journaux du domaine concerné. Tous les répertoires / fichiers dans / var / www / vhosts / sont la propriété des utilisateurs respectifs (propriétaires de domaine) et vous pouvez voir qu'ils sont tous dans le groupe psacln. La solution était donc d'ajouter nginx également à ce groupe, afin qu'il puisse voir ce dont il a besoin:
Et en effet, redémarrez nginx et rechargez la page avec Ctrl + F5.
la source
J'ai trouvé une solution: déplacé le dossier dans le dossier de configuration de nginx, dans mon cas "/ etc / nginx / my-web-app". Et puis changé les permissions de l'utilisateur root "sudo chown -R root: root" my-web-app ".
la source
Vous pouvez également ajouter quel utilisateur exécutera le nginx. Dans le fichier nginx.conf, apportez les modifications suivantes:
Vous pouvez ajouter la ligne ci-dessus comme première ligne dans votre configuration nginx. Vous pouvez écrire le nom de tout utilisateur autorisé à écrire dans ce répertoire.
la source
C'est généralement le problème des privilèges ... Pour moi, c'est parce que j'utilise le / root / ** comme racine nginx, il a besoin de privilèges plus élevés. Un moyen simple consiste simplement à déplacer le projet dans un répertoire créé par vous-même.
la source