Относительный путь nginx для включения

10

В conf-файле nginx есть ли способ указать includeдругой conf-файл относительно текущего conf-файла?

Я хотел бы написать:

server {
  listen       80;
  server_name  localhost;

  include "../apis/basic.conf";

...
} 
Алекс Ротберг
источник
2
Нет. Все пути являются либо абсолютными, либо относительными к префиксному пути nginx.org/en/docs/configure.html
Алексей Тен
1
Гадание на вашем макете файла и папки, include apis/basic.conf;вероятно, просто сработает. Например, это включение относится к корню конфигурации, поэтому включает этот файл .
AD7six

Ответы:

4

Документы Nginx для includeдирективы не документируют, как обрабатываются относительные пути (начиная с версии 1.9.15). Мое чтение кода C состоит в том, что путь должен быть абсолютным или относительным к пути префикса, как предложил Алексей Тен в комментарии.

Вот связанная ссылка на исходный код .

Марк Стосберг
источник
1
Я только что протестировал на Nginx 1.10.3. Установка и -pпопытка в .том числе ./nginx.confиз файла конфигурации, хранящегося в /tmp. Он ошибается, говоря, что не может найти /tmp/./nginx.conf. Либо -pопция не делает этого, либо включение включает только относительно файла конфигурации, либо мой nginx не работает.
CMCDragonkai
-pОпция влияет только тогда, когда nginxкоманда ищет файл конфигурации. Использование nginx -p . -c ./nginx.confзаставит команду nginx искать ./nginx.conf, в противном случае без нее будет найден путь префикса для ./nginx.conf.
CMCDragonkai
2

По аналогии с тем, что прокомментировал Алексей Тен, будет использоваться префикс по умолчанию. Но в соответствии с этой статьей StackOverflow: https://stackoverflow.com/a/25486871/1684819 можно указать параметр -p, чтобы объявить, куда будут ссылаться все относительные пути вместо пути компилирования по умолчанию.

xobes
источник