Можно ли указать root
путь относительно содержащегося файла conf?
Мы разрабатываем веб-приложение и сохраняем app-nginx.conf
файл с конфигурацией для конкретного приложения в каталоге проекта. Я хочу включить этот файл в основной nginx.conf
и имеют root
путь, правильно ссылающийся на подкаталог необходимого проекта. Пример:
# /etc/nginx/nginx.conf
http {
include /absolute/path/to/app/app-nginx.conf
}
# /absolute/path/to/app/app-nginx.conf
server {
server_name localhost;
listen 9090;
root ./app;
}
После запуска nginx с аналогичной конфигурацией nginx пытается разрешить ./app
путь относительно каталога установки nginx (/usr/local/Cellar/nginx/1.4.3/
в моем случае), а не в каталог приложения.
Можно ли указать корневой путь относительно содержащегося файла conf?
Короткий ответ: Нет.
Длинный ответ: по умолчанию Nginx знает только путь, например --prefix
и --conf-path
которые устанавливаются во время компиляции (ссылка: https://nginx.org/en/docs/configure.html). Мы можем найти различные пути, используемые Nginx, выполнив команду nginx -V
(это заглавная буква "V"). Так, --conf-path
это где главный nginx.conf
файл находится и который path используется для любых относительных путей.
Согласно официальной документации (https://nginx.org/r/root), а root
Однако директива может содержать и другие переменные.
Спасибо @cyker за разъяснения после 5 лет публикации первоначального ответа!
Я не нашел способа использовать относительные пути или определять глобальные переменные, но этот маленький трюк решает мою проблему.