Référence de l'emplacement racine en tant que variable dans le bloc serveur {}

11

Dans mon bloc de serveur nginx {}, j'ai root défini avec un chemin d'accès. Comment puis-je référencer plus tard ce chemin?

Voici ce que j'essaie d'accomplir:

server {
    listen 80;
    root /var/www/foosite;

    ...

    include $root/*.ngaccess;
}

Malheureusement, l'utilisation de $ root ne fonctionne pas (car je ne l'ai pas défini). Nginx fournit-il un moyen d'accéder à la valeur racine?

skyler
la source

Réponses:

15

Vous voulez la document_rootvariable.

mgorven
la source
Pour cela: root / var / www / foosite / public /; include $ document_root.ngaccess; J'obtiens l'erreur "nginx: [Emerg] open ()" /etc/nginx/$document_root/.ngaccess "a échoué (2: aucun fichier ou répertoire de ce type)." $ document_root semble être la solution, mais ai-je tapé quelque chose de mal? Selon ce post (et d'autres que j'ai rencontrés) forum.linode.com/viewtopic.php?t=7898 , les variables ne peuvent pas être utilisées dans les instructions d'inclusion. Ce qui, si c'est vrai, est regrettable.
skyler
Cela implique que nginx n'évalue la includedirective qu'au démarrage, pas pour chaque demande (ce qui est logique), il semble donc que ce que vous voulez réaliser ne soit malheureusement pas possible.
mgorven
1
J'ai également rencontré un problème ici: "La valeur du chemin peut contenir des variables, à l'exception de $ document_root et $ realpath_root." nginx.org/en/docs/http/…
éditeur