Nginx: percorso radice relativo al file conf


17

È possibile specificare il rootpercorso relativo al file conf contenente?

Stiamo sviluppando un'app Web e conserviamo il app-nginx.conffile con la configurazione specifica dell'app nella directory del progetto. Voglio essere in grado di includere questo file in main nginx.confe avere un rootpercorso che faccia correttamente riferimento alla sottodirectory del progetto richiesto. Esempio:

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

Dopo aver avviato nginx con una configurazione simile, nginx tenta di risolvere il ./apppercorso relativo alla directory di installazione di nginx ( /usr/local/Cellar/nginx/1.4.3/nel mio caso), non alla directory dell'app.

Risposte:


11

È possibile specificare il percorso di root relativo al file conf contenente?

Risposta breve: No.

Risposta lunga: Nginx, per impostazione predefinita, conosce solo il percorso come --prefixe --conf-pathche sono impostati al momento della compilazione (rif: https://nginx.org/en/docs/configure.html ). Possiamo trovare vari percorsi usati da Nginx eseguendo il comando nginx -V(è la "V" maiuscola). Quindi, --conf-pathè dove nginx.confrisiede il file principale e quel percorso viene utilizzato per tutti i percorsi relativi.

Secondo la documentazione ufficiale ( https://nginx.org/r/root ), una rootdirettiva può contenere altre variabili.

Grazie per @cyker per aver chiarito dopo 5 anni di pubblicazione della risposta iniziale!


Grazie Pothi. Sfortunatamente nessuna delle opzioni funziona per me. --prefixpuò influenzare altri server nginx e dal mio punto di vista personale un po 'più difficile da gestire rispetto al file di configurazione. E nginx non consente di creare variabili personalizzate con setdirettiva al di fuori del servercontesto, quindi non posso spostare il percorso assoluto dal mio file app-nginx.conf.
Anton Moiseev,

Quindi, quel percorso viene utilizzato per qualsiasi percorso relativo. Penso che questo sia inaccurato. Sembra che nginx userà la directory di configurazione per le opzioni includee ssl_certificate, per esempio, ma userà la directory di prefisso per opzioni come root. Non mi viene in mente un elenco completo su quale utilizza ciascuna opzione.
Cyker,

@Cyker Hai ragione. Aggiornato la risposta ora. Certo, non è completo. Ma, meglio della risposta originale (che era davvero sbagliata / inaccurata).
Pothi Kalimuthu,

Sto leggendo Nginx dal principiante al professionista, si nota che: "Hai già visto l'uso della direttiva radice all'interno di un blocco di posizione. La direttiva radice dice a Nginx di restituire /image/myimage.jpg invece di percorso completo / etc / nginx / html / app1 / immagine / myimage.jpg." quindi IMHO significa che Nginx config supporta percorsi relativi?
Webwoman,

Qui, la domanda è specifica della direttiva "root" e se potrebbe supportare "percorso relativo al file conf".
Pothi Kalimuthu,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.