web-dev-qa-db-fra.com

Nginx ne suit pas les liens symboliques

J'ai installé nginx sur Ubuntu 12.04. Cependant, nginx ne semble pas suivre les liens symboliques. Je comprends qu'un changement de configuration est requis pour cela, mais je ne parviens pas à trouver où effectuer le changement. Toute aide appréciée.

36
Neo

Jetez un œil à l'option de configuration suivante de nginx docs :

Syntaxe:

disable_symlinks off;
disable_symlinks on |
if_not_owner [from=part];

Par défaut: disable_symlinks off;

Contexte: http, serveur, emplacement

Cette directive est apparue dans la version 1.1.15.

31
cobaco

Dans mon cas, nginx était déjà configuré pour suivre les liens symboliques. Mais le problème était que l'utilisateur nginx ne pouvait pas accéder à mes fichiers personnels et que le lien symbolique vers mon répertoire personnel ne fonctionnait pas.

Exemple

Supposons que nous ayons un lien symbolique /usr/share/nginx/www/mylink -> /home/u/html

cd /usr/share/nginx/www
mkdir   -p  /home/u/html
Sudo ln -sv /home/u/html mylink  # creates mylink -> /home/u/html

Accorder des autorisations

Donnez aux r ead et e x autorisations d'échange en utilisant chmod et find :

chmod +rx /home/u
chmod +rw /home/u/html
find /home/u/html/php -type d -exec chmod +rx {} +
find /home/u/html/php -type d -exec chmod +w  {} +  # optional

Remarques:

  1. L'autorisation x est nommée e x ecute. Mais lorsqu'elle est appliquée à un répertoire, cette permission permet de récuser l'arborescence du répertoire (voir modes Unix ).

  2. La commande find ... -exec chmod ... modifie récursivement les autorisations. Nous pourrions également utiliser la commande chmod -R +rx /home/myuser/html mais cette dernière commande donne également le permission d'exécution à tous les fichiers normaux, et nous ne voulons pas cela. L'option -type d exécute chmod uniquement aux répertoires.

  3. La dernière commande facultative donne autorisation d'écriture si vos scripts PHP nécessitent d'écrire des données. Essayez de limiter l'autorisation d'écriture aux répertoires requis uniquement pour des raisons de sécurité.

Tester

Pas besoin de redémarrer ngnix, appuyez simplement sur Ctrl+F5 dans votre navigateur.

Attention: Il n'est pas recommandé de créer des liens symboliques pointant vers votre répertoire personnel car une erreur d'accès en lecture/écriture ou un mauvais lien symbolique peut exposer votre numérique Les données...

Référence: Arch wiki sur nginx

30
olibre

si la réponse d'Olibre ne permet pas de modifier le fichier/etc/nginx/sites-available/default et d'ajouter cette ligne là où vous avez spécifié le répertoire racine de votre serveur.

autoindex on;

enregistrer le fichier et redémarrer le serveur

/etc/init.d/nginx restart
4
Asgher Hussain