Zlokalizuj plik nginx.conf, którego faktycznie używa mój nginx

136

Praca na serwerze klienta, na którym są zainstalowane dwie różne wersje nginx. Myślę, że jeden z nich został zainstalowany z menedżerem pakietów brew (jest to pudełko z systemem OSX), a drugi został skompilowany i zainstalowany z plikiem Makefile spakowanym w nginx. Szukałem wszystkich plików nginx.conf na serwerze, ale żaden z tych plików nie definiuje parametrów, których faktycznie używa nginx, kiedy uruchamiam go na serwerze. Gdzie jest plik nginx.conf, którego nie znam?

rgb
źródło

Odpowiedzi:

253

Uruchomienie linii nginx -tpoleceń spowoduje uruchomienie testu i dodanie danych wyjściowych ze ścieżką do pliku konfiguracyjnego (z komunikatem o błędzie lub powodzeniu).

Daniel Li
źródło
34

Obie nginx -ti nginx -Vwydrukowałyby domyślną ścieżkę do pliku konfiguracyjnego 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 ...

Jeśli chcesz, możesz pobrać plik konfiguracyjny przez:

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

Nawet jeśli załadowałeś inny plik konfiguracyjny, nadal będą drukować domyślną wartość.


ps aux pokaże aktualnie załadowany plik konfiguracyjny nginx.

$ 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

Aby faktycznie uzyskać plik konfiguracyjny, na przykład:

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf
Jing Li
źródło
33
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

Jeśli nginx został uruchomiony bez -copcji, możesz użyć tej -Vopcji, aby znaleźć argumenty konfiguracji, które zostały ustawione na niestandardowe wartości. Wśród nich najciekawsze dla Ciebie to:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname
VBart
źródło
1
Próbowałem uruchomić polecenia, ale nie zadziałały. Druga odpowiedź działa
Revious
7
which nginx

poda ścieżkę używanego nginx


EDYCJA (18 stycznia 2017)

Dzięki komentarzowi Willa Palmera na temat tej odpowiedzi dodałem następujący ...

Jeśli zainstalowałeś nginx za pośrednictwem menedżera pakietów, takiego jak HomeBrew ...

which nginx

może nie dać ci DOKŁADNEJ ścieżki do używanego nginx. Możesz go jednak znaleźć za pomocą

realpath $(which nginx)

i jak wspomniał @Daniel Li

możesz uzyskać konfigurację nginx za pomocą jego metody

alternatywnie możesz użyć tego:

nginx -V
Craig Wayne
źródło
1
„który” działa w większości systemów opartych na Uniksie. Po prostu wpisałem go na Ubuntu, aby upewnić się, że nie straciłem zmysłów.
tqwhite
1
oh wow, jestem poprawiony. modyfikowanie odpowiedzi od razu. dzięki
Craig Wayne
1
which nginxpokazuje tylko domyślną ścieżkę do nginx dla bieżącego użytkownika (nawet dla bieżącego użytkownika - bieżącej powłoki ). Zdecydowanie nie pokazuje ścieżki, dla której nginx „jest używany”.
Will Palmer
3

Wszystkie inne odpowiedzi są przydatne, ale mogą ci nie pomóc, jeśli nginxnie są włączone, PATHwięc otrzymujesz command not found, próbując uruchomićnginx :

Mam nginx 1.2.1 na Debianie 7 Wheezy, nginxplik wykonywalny nie jest włączony PATH, więc najpierw musiałem go zlokalizować. Był już uruchomiony, więc używając ps aux | grep nginxdowiedziałem się, że się na nim znajduje /usr/sbin/nginx, dlatego musiałem biec/usr/sbin/nginx -t .

Jeśli chcesz użyć inny niż domyślny plik konfiguracyjny (czyli nie /etc/nginx/nginx.conf), należy uruchomić go z -cparametrem: /usr/sbin/nginx -c <path-to-configuration> -t.

Może być również konieczne uruchomienie go jakoroot , w przeciwnym razie nginx może nie mieć uprawnień do otwierania na przykład dzienników, więc polecenie zakończy się niepowodzeniem.

David Ferenczy Rogožan
źródło
1

Oprócz odpowiedzi @Daniel Li, instalacja nginx z Valetem również użyłaby konfiguracji Velet, którą można znaleźć w "/usr/local/etc/nginx/valet/valet.conf". Plik nginx.conf zaimportowałby ten plik konfiguracyjny Valet. Potrzebne ustawienia mogą znajdować się w pliku Valet.

Olusola Omosola
źródło