Suchen Sie die Datei nginx.conf, die mein Nginx tatsächlich verwendet

130

Arbeiten auf einem Client-Server, auf dem zwei verschiedene Versionen von nginx installiert sind. Ich denke, einer von ihnen wurde mit dem Brew Package Manager (es ist eine Osx-Box) installiert und der andere scheint mit dem Nginx-verpackten Makefile kompiliert und installiert worden zu sein. Ich habe nach allen nginx.conf-Dateien auf dem Server gesucht, aber keine dieser Dateien definiert die Parameter, die nginx tatsächlich verwendet, wenn ich es auf dem Server starte. Wo ist die Datei nginx.conf, die mir nicht bekannt ist?

rgb
quelle

Antworten:

244

Laufen nginx -tdurch Ihre Kommandozeile wird die Ausgabe mit dem Dateipfad in die Konfigurationsdatei einen Tests und fügen Sie Ausgabe aus (entweder mit einem Fehler oder Erfolgsmeldung).

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

Wenn nginx ohne diese -cOption ausgeführt wurde, können Sie mit dieser -VOption die Konfigurationsargumente ermitteln, die auf nicht standardmäßige Werte festgelegt wurden. Unter ihnen sind die interessantesten für Sie:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname
VBart
quelle
1
Ich habe versucht, die Befehle auszuführen, aber sie haben bei mir nicht funktioniert. Die zweite Antwort funktioniert
Revious
31

Beides nginx -tund nginx -Vwürde den Standardpfad der nginx-Konfigurationsdatei ausdrucken.

$ 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 ...

Wenn Sie möchten, können Sie die Konfigurationsdatei erhalten, indem Sie:

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

Selbst wenn Sie eine andere Konfigurationsdatei geladen haben, wird der Standardwert trotzdem ausgedruckt.


ps aux würde Ihnen die aktuell geladene Nginx-Konfigurationsdatei anzeigen.

$ 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

Damit Sie die Konfigurationsdatei tatsächlich erhalten können, indem Sie beispielsweise:

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

gibt Ihnen den Pfad des verwendeten Nginx


BEARBEITEN (2017-Jan-18)

Dank Will Palmers Kommentar zu dieser Antwort habe ich Folgendes hinzugefügt ...

Wenn Sie nginx über einen Paketmanager wie HomeBrew installiert haben ...

which nginx

Möglicherweise erhalten Sie nicht den GENAUEN Pfad zum verwendeten Nginx. Sie können es jedoch mit finden

realpath $(which nginx)

und wie von @Daniel Li erwähnt

Sie können die Konfiguration von Nginx über seine Methode erhalten

Alternativ können Sie dies verwenden:

nginx -V
Craig Wayne
quelle
1
"which" funktioniert auf den meisten Unix-basierten Systemen. Ich habe es nur unter Ubuntu getippt, um sicherzugehen, dass ich nicht den Verstand verloren habe.
Weiß
1
Oh wow, ich stehe korrigiert. Ändern Sie die Antwort sofort. danke
Craig Wayne
1
which nginxZeigt nur den Standardpfad für nginx für den aktuellen Benutzer an (nicht einmal den aktuellen Benutzer - die aktuelle Shell ). Es zeigt definitiv nicht den Pfad, für den Nginx "verwendet wird".
Will Palmer
2

Alle anderen Antworten sind nützlich, helfen Ihnen jedoch möglicherweise nicht, falls sie nginxnicht PATHaktiviert sind, sodass Sie command not foundbeim Versuch, Folgendes auszuführen, Folgendes erhaltennginx :

Ich habe Nginx 1.2.1 unter Debian 7 Wheezy, die nginxausführbare Datei ist nicht aktiviert PATH, daher musste ich sie zuerst suchen. Es lief bereits, also habe ps aux | grep nginxich mit festgestellt, dass es sich auf befindet /usr/sbin/nginx, daher musste ich laufen/usr/sbin/nginx -t .

Wenn Sie eine nicht standardmäßige Konfigurationsdatei verwenden möchten (dh nicht /etc/nginx/nginx.conf), führen Sie sie mit dem -cParameter aus : /usr/sbin/nginx -c <path-to-configuration> -t.

Möglicherweise müssen Sie es auch als ausführenroot , andernfalls verfügt nginx möglicherweise nicht über die Berechtigung zum Öffnen von beispielsweise Protokollen, sodass der Befehl fehlschlagen würde.

David Ferenczy Rogožan
quelle
1

Zusätzlich zu der Antwort von @Daniel Li würde die Nginx-Installation mit Valet auch die Velet-Konfiguration verwenden. Diese finden Sie unter "/usr/local/etc/nginx/valet/valet.conf". Die Datei nginx.conf hätte diese Valet conf-Datei importiert. Die Einstellungen, die Sie benötigen, befinden sich möglicherweise in der Valet-Datei.

Olusola Omosola
quelle