Individua il file nginx.conf effettivamente utilizzato da nginx


131

Lavorando sul server di un client in cui sono installate due diverse versioni di nginx. Penso che uno di questi sia stato installato con il gestore di pacchetti brew (è una scatola osx) e l'altro sembra essere stato compilato e installato con il Makefile pacchetto nginx. Ho cercato tutti i file nginx.conf sul server, ma nessuno di questi file definisce i parametri che nginx sta effettivamente utilizzando all'avvio sul server. Dov'è il file nginx.conf di cui non sono a conoscenza?

Risposte:


247

L'esecuzione nginx -tdella riga di comando genererà un test e aggiungerà l'output con il percorso del file al file di configurazione (con un messaggio di errore o di successo).


34

Entrambi nginx -te nginx -Vstamperebbero il percorso predefinito del file di configurazione di nginx.

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ nginx -V
nginx version: nginx/1.11.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf ...

Se vuoi, puoi ottenere il file di configurazione da:

$ nginx -V 2>&1 | grep -o '\-\-conf-path=\(.*conf\)' | cut -d '=' -f2
/etc/nginx/nginx.conf

Anche se hai caricato qualche altro file di configurazione, continuerebbero a stampare il valore predefinito.


ps aux ti mostrerebbe il file di configurazione nginx attualmente caricato.

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        11  0.0  0.2  31720  2212 ?        Ss   Jul23   0:00 nginx: master process nginx -c /app/nginx.conf

In modo da poter effettivamente ottenere il file di configurazione, ad esempio:

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf

33
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

Se nginx è stato eseguito senza l' -copzione, è possibile utilizzare l' -Vopzione per scoprire gli argomenti di configurazione impostati su valori non standard. Tra questi i più interessanti per te sono:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname

1
Ho provato a eseguire i comandi, ma non hanno funzionato per me. La seconda risposta funziona
Revious il

7
which nginx

ti darà il percorso del nginx in uso


EDIT (2017-gen-18)

Grazie al commento di Will Palmer su questa risposta, ho aggiunto quanto segue ...

Se hai installato nginx tramite un gestore di pacchetti come HomeBrew ...

which nginx

potrebbe non fornire il percorso ESATTO al nginx in uso. Puoi comunque trovarlo usando

realpath $(which nginx)

e come menzionato da @Daniel Li

puoi ottenere la configurazione di nginx tramite il suo metodo

in alternativa puoi usare questo:

nginx -V

1
"che" funziona sulla maggior parte dei sistemi basati su Unix. L'ho appena digitato su Ubuntu per assicurarmi di non aver perso la testa.
tqwhite

1
oh wow, sono corretto. modificando la risposta immediatamente. grazie
Craig Wayne,

1
which nginxmostra solo il percorso predefinito per nginx per l'utente corrente (nemmeno per l'utente corrente - la shell corrente ). Sicuramente non mostra il percorso per cui nginx "viene utilizzato".
Will Palmer,

2

Tutte le altre risposte sono utili ma potrebbero non aiutarti nel caso in cui nginxnon sia attivo, PATHquindi stai ricevendo command not foundquando si tenta di eseguirenginx :

Ho nginx 1.2.1 su Debian 7 Wheezy, l' nginxeseguibile non è attivo PATH, quindi prima dovevo trovarlo. Era già in esecuzione, quindi utilizzando ps aux | grep nginxho scoperto che si trova su /usr/sbin/nginx, quindi ho dovuto eseguire/usr/sbin/nginx -t .

Se si desidera utilizzare un file di configurazione non predefinito (ovvero non /etc/nginx/nginx.conf), eseguirlo con-c parametro: /usr/sbin/nginx -c <path-to-configuration> -t.

Potrebbe anche essere necessario eseguirlo comeroot , altrimenti nginx potrebbe non disporre delle autorizzazioni per aprire ad esempio i registri, quindi il comando fallirebbe.


1

Oltre alla risposta di @Daniel Li, l'installazione di nginx con Valet userebbe anche la configurazione di Velet, che si trova in "/usr/local/etc/nginx/valet/valet.conf". Il file nginx.conf avrebbe importato questo file conf Valet. Le impostazioni necessarie potrebbero essere nel file Valet.

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.