Temukan file nginx.conf yang nginx saya gunakan


130

Bekerja pada server klien di mana ada dua versi nginx yang berbeda diinstal. Saya pikir salah satu dari mereka diinstal dengan manajer paket pembuatan (ini adalah kotak osx) dan yang lain tampaknya telah dikompilasi dan diinstal dengan Makefile nginx yang dikemas. Saya mencari semua file nginx.conf di server, tetapi tidak ada file-file ini yang menentukan parameter yang sebenarnya digunakan nginx ketika saya memulainya di server. Di mana file nginx.conf yang saya tidak sadari?

Jawaban:


245

Menjalankan nginx -tmelalui commandline Anda akan mengeluarkan tes dan menambahkan output dengan filepath ke file konfigurasi (dengan kesalahan atau pesan sukses).


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

Jika nginx dijalankan tanpa -copsi, maka Anda dapat menggunakan -Vopsi untuk mengetahui argumen konfigurasi yang disetel ke nilai non-standar. Di antara mereka yang paling menarik bagi Anda adalah:

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

1
Saya mencoba menjalankan perintah tetapi mereka tidak bekerja untuk saya .. Jawaban kedua bekerja
Revisi

32

Keduanya nginx -tdan nginx -Vakan mencetak jalur file konfigurasi nginx default.

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

Jika mau, Anda bisa mendapatkan file konfigurasi dengan:

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

Bahkan jika Anda telah memuat beberapa file konfigurasi lainnya, mereka masih akan mencetak nilai default.


ps aux akan menunjukkan kepada Anda file konfigurasi nginx yang dimuat saat ini.

$ 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

Sehingga Anda benar-benar bisa mendapatkan file konfigurasi misalnya:

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

7
which nginx

akan memberi Anda jalan nginx yang digunakan


EDIT (2017-Jan-18)

Berkat komentar Will Palmer tentang jawaban ini, saya telah menambahkan yang berikut ...

Jika Anda telah menginstal nginx melalui manajer paket seperti HomeBrew ...

which nginx

mungkin tidak memberi Anda jalur EXACT ke nginx yang digunakan. Namun Anda dapat menemukannya menggunakan

realpath $(which nginx)

dan seperti yang disebutkan oleh @Daniel Li

Anda bisa mendapatkan konfigurasi nginx melalui metodenya

atau Anda dapat menggunakan ini:

nginx -V

1
"yang" bekerja pada sebagian besar sistem berbasis Unix. Saya baru saja mengetiknya di Ubuntu untuk memastikan saya tidak kehilangan akal.
tqwhite

1
oh wow, saya berdiri dikoreksi. memodifikasi jawaban segera. terima kasih
Craig Wayne

1
which nginxhanya menunjukkan jalur default untuk nginx untuk pengguna saat ini (bahkan pengguna saat ini - shell saat ini ). Jelas tidak menunjukkan jalan yang nginx "sedang digunakan".
Will Palmer

2

Semua jawaban lain berguna tetapi mereka mungkin tidak membantu Anda jika nginxtidak aktif PATHsehingga Anda mendapatkan command not foundketika mencoba menjalankannginx :

Saya memiliki nginx 1.2.1 pada Debian 7 Wheezy, nginxexecutable tidak aktif PATH, jadi saya harus menemukannya terlebih dahulu. Itu sudah berjalan, jadi menggunakan ps aux | grep nginxsaya telah menemukan bahwa itu berada di /usr/sbin/nginx, oleh karena itu saya perlu menjalankan/usr/sbin/nginx -t .

Jika Anda ingin menggunakan file konfigurasi non-default (yaitu tidak /etc/nginx/nginx.conf), menjalankannya dengan -cparameter: /usr/sbin/nginx -c <path-to-configuration> -t.

Anda mungkin juga perlu menjalankannyaroot , jika tidak nginx mungkin tidak memiliki izin untuk membuka misalnya log, jadi perintahnya akan gagal.


1

Selain jawaban @Daniel Li, instalasi nginx dengan Valet juga akan menggunakan konfigurasi Velet, ini ditemukan di "/usr/local/etc/nginx/valet/valet.conf". File nginx.conf akan mengimpor file conf Valet ini. Pengaturan yang Anda butuhkan mungkin ada di file Valet.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.