Назад | Перейти на главную страницу

Nginx: корневой путь относительно файла conf

Можно ли указать 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 лет публикации первоначального ответа!

Я не нашел способа использовать относительные пути или определять глобальные переменные, но этот маленький трюк решает мою проблему.