Nginx: caminho raiz relativo ao arquivo conf

17

É possível especificar o rootcaminho relativo ao arquivo conf que contém?

Estamos desenvolvendo um aplicativo Web e mantemos o app-nginx.confarquivo com configuração específica do aplicativo no diretório do projeto. Quero poder incluir esse arquivo no main nginx.confe ter o rootcaminho referenciando adequadamente o subdiretório do projeto necessário. Exemplo:

# /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;
}

Depois de iniciar o nginx com uma configuração semelhante, o nginx tenta resolver o ./appcaminho relativo ao diretório de instalação do nginx ( /usr/local/Cellar/nginx/1.4.3/no meu caso), não ao diretório do aplicativo.

Anton Moiseev
fonte

Respostas:

11

É possível especificar o caminho raiz relativo ao arquivo conf que contém?

Resposta curta: Não.

Resposta longa: o Nginx, por padrão, sabe apenas sobre o caminho como --prefixe --conf-pathque é definido no tempo de compilação (ref: https://nginx.org/en/docs/configure.html ). Podemos encontrar vários caminhos usados ​​pelo Nginx executando o comando nginx -V(é "V" maiúsculo). Portanto, --conf-pathé onde o nginx.confarquivo principal reside e esse caminho é usado para quaisquer caminhos relativos.

De acordo com a documentação oficial ( https://nginx.org/r/root ), uma rootdiretiva pode conter outras variáveis.

Obrigado por @cyker por esclarecer após 5 anos postando a resposta inicial!

Pothi Kalimuthu
fonte
Obrigado, Pothi. Infelizmente, nenhuma das opções funciona para mim. --prefixpode afetar outros servidores nginx e, da minha perspectiva pessoal, um pouco mais difícil de gerenciar em comparação com o arquivo de configuração. E o nginx não permite criar variáveis ​​personalizadas com setdiretiva fora do servercontexto; portanto, não posso mover o caminho absoluto do meu arquivo app-nginx.conf.
Anton Moiseev 24/10
Portanto, esse caminho é usado para quaisquer caminhos relativos. Eu acho que isso é impreciso. Parece que o nginx usará o dir de configuração para opções includee ssl_certificate, por exemplo, mas usará o prefixo dir para opções como root. Não pareço apresentar uma lista completa sobre qual delas cada opção usa.
27618 Cyker
@ Cyker Você está certo. Atualizou a resposta agora. Claro, não está completo. Mas, melhor do que a resposta original (que estava de fato errada / imprecisa).
Pothi Kalimuthu
Estou lendo o Nginx do iniciante ao profissional, note que: "Você já viu o uso da diretiva raiz dentro de um bloco de localização. A diretiva raiz diz ao Nginx para retornar /image/myimage.jpg em vez do caminho totalmente qualificado / etc / nginx / html / app1 / image / myimage.jpg. " então IMHO significa que a configuração do Nginx suporta pathes relativos?
Webwoman
Aqui, a questão é específica à diretiva "root" e se ela pode suportar "caminho relativo para o arquivo conf".
Pothi Kalimuthu 19/09/18
0

Não encontrei uma maneira de usar caminhos relativos ou definir variáveis ​​globais, mas esse pequeno truque resolve meu problema.

Anton Moiseev
fonte
3
Que truque?
Michael Hampton
Não consigo definir variável, mas posso usar a mapdiretiva com defaultvalor único que desempenhará o papel da variável para mim.
Anton Moiseev 25/10