Referenzstammspeicherort als Variable im Serverblock {}

11

In meinem Nginx Server {} Block habe ich root mit einem Pfad definiert. Wie kann ich später auf diesen Pfad verweisen?

Folgendes versuche ich zu erreichen:

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

    ...

    include $root/*.ngaccess;
}

Leider funktioniert die Verwendung von $ root nicht (weil ich es nicht definiert habe). Bietet Nginx eine Möglichkeit, auf den Stammwert zuzugreifen?

Skyler
quelle

Antworten:

15

Sie möchten die document_rootVariable.

mgorven
quelle
Gehen Sie dazu folgendermaßen vor: root / var / www / foosite / public /; include $ document_root.ngaccess; Ich erhalte die Fehlermeldung "nginx: [emerg] open ()" /etc/nginx/$document_root/.ngaccess "fehlgeschlagen (2: Keine solche Datei oder kein solches Verzeichnis)." $ document_root scheint die Lösung zu sein, aber habe ich etwas falsch eingegeben? Laut diesem Beitrag (und anderen, auf die ich gestoßen bin) forum.linode.com/viewtopic.php?t=7898 können Variablen nicht in include-Anweisungen verwendet werden. Was, wenn es stimmt, unglücklich ist.
Skyler
Dies bedeutet, dass nginx die includeDirektive nur beim Start bewertet , nicht für jede Anforderung (was sinnvoll ist). Es scheint also, dass das, was Sie erreichen möchten, leider nicht möglich ist.
mgorven
1
Ich bin auch hier auf ein Problem gestoßen: "Der Pfadwert kann Variablen enthalten, außer $ document_root und $ realpath_root." nginx.org/en/docs/http/…
Herausgeber