Ссылочный корневой каталог как переменная в блоке server {}

11

В моем блоке nginx server {} у меня есть root, определенный с путем. Как я могу позже ссылаться на этот путь?

Вот что я пытаюсь сделать:

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

    ...

    include $root/*.ngaccess;
}

К сожалению, использование $ root не работает (потому что я не определил его). Предоставляет ли Nginx способ доступа к корневому значению?

Скайлер
источник

Ответы:

15

Вы хотите document_rootпеременную.

mgorven
источник
Делаем это: root / var / www / foosite / public /; include $ document_root.ngaccess; Я получаю сообщение об ошибке "nginx: [emerg] open ()" /etc/nginx/$document_root/.ngaccess "не удалось (2: нет такого файла или каталога)." $ document_root кажется, что это было бы решением, но я что-то не так набрал? Согласно этому посту (и другим, с которыми я сталкивался) forum.linode.com/viewtopic.php?t=7898 , переменные нельзя использовать в операторах включения. Что, если это правда, является неудачным.
Скайлер
Это означает, что nginx оценивает includeдирективу только при запуске, а не для каждого запроса (что имеет смысл), поэтому кажется, что то, чего вы хотите достичь, к сожалению, невозможно.
Мгорвен
1
Я тоже столкнулся с проблемой: «Значение пути может содержать переменные, кроме $ document_root и $ realpath_root». nginx.org/en/docs/http/…
редактор