Bagaimana saya bisa melihat bendera mana yang dikompilasi dengan Nginx?


227

Bagaimana saya bisa memeriksa modul apa yang telah ditambahkan ke instalasi nginx?


7
Cara lain untuk mengatakan ini adalah "bagaimana saya bisa melihat bendera mana yang dikompilasi dengan Nginx?" Hanya ingin menambahkan itu untuk meningkatkan pencarian.
Nathan Long

Jawaban:


291

nginx -Vakan mendaftar semua modul yang dikonfigurasi. Tidak ada perintah aktifkan / muat eksplisit.


8
Catatan untuk noobs: Jika tidak masuk sebagai pengguna root, perintahnya adalahsudo nginx -V
its_me

4
Saya tidak perlu menggunakan sudoUbuntu 14.04
Asfand Qazi

5
Harap dicatat bahwa parameter ini peka huruf besar-kecil. Jika Anda menggunakan huruf kecil "-v" Anda hanya akan mendapatkan nomor versi. Huruf besar "-V" memberi Anda konfigurasi lengkap termasuk daftar semua modul yang digunakan untuk kompilasi biner Nginx.
Illidan

1
Sepertinya beberapa sistem mungkin tidak memiliki $PATHset yang benar untuk non-pengguna super, menghilangkan semua sbindirektori, jadi, Anda mungkin harus menentukan path lengkap daemon (misalnya, /usr/sbin/nginx -V), atau memang hanya menggunakan sudo.
cnst

@its_me ... Anda mungkin tidak perlu sudo untuk menjalankannginx -V
Carson Reinke

64

Diff -able one-liner:

2>&1 nginx -V | tr -- - '\n' | grep _module

Nyaman untuk membandingkan dua lingkungan:

lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

SUNTING:

Terima kasih, Roman Newaza, untuk menunjukkan dengan benar bahwa ini termasuk --withoutflag kompilasi modul. Saya tidak menggunakan --withoutflag dan hanya fokus untuk mendapatkan daftar modul, jadi saya tidak menangkapnya; one-liner dapat dimodifikasi untuk membantu mengompilasi flag berbeda antara 2 instalasi, seperti ini:

2>&1 nginx -V | tr ' '  '\n'

yang sama dengan:

2>&1 nginx -V | xargs -n1

Mungkin juga mem-pipe yang melalui sortuntuk menormalkan urutan istimewa dari flag kompilasi dan trlagi untuk membagi tugas ke baris yang berbeda. Hasil akhir:

lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

Itu berfungsi jika sortberperilaku sama pada kedua host jarak jauh (mis. Keduanya GNU atau BSD). Jika Anda membandingkan Linux dengan BSD (Mac OS X), cukup pindahkan | sort | tr = '\n'bagian lsmodnke shell lokal yang sortkonsisten:

lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn  | sort | tr = '\n')

Messier, tetapi berhasil.


2
2>&1 nginx -V | tr -- - '\n' | grep _modulePerintah ini benar-benar salah karena daftar tanpa opsi * diinstal!
Roman Newaza

jawaban yang luar biasa. Karena ketertarikan, mengapa Anda menempatkan 2> & 1 di depan. dari apa yang saya lihat itu lebih tidak biasa?
iring

@MattTagg hanya di depan sampai digunakan. Maka itu di akhir dari salah satu perintah.
kmarsh

3
  • The nginx -Vperintah (-huruf V) akan daftar semua modul, serta pilihan saat kompilasi lainnya:

    %nginx -V nginx version: nginx/1.2.2 built by gcc 4.2.1 20070719 TLS SNI support enabled configure arguments: --prefix=/var/www --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=logs/access.log --error-log-path=logs/error.log --http-client-body-temp-path=/var/www/cache/client_body_temp --http-proxy-temp-path=/var/www/cache/proxy_temp --http-fastcgi-temp-path=/var/www/cache/fastcgi_temp --http-scgi-temp-path=/var/www/cache/scgi_temp --http-uwsgi-temp-path=/var/www/cache/uwsgi_temp --user=www --group=www --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module %

    Perhatikan bahwa tidak pernah ada kebutuhan untuk sudoperintah ini, karena kekuatan superuser hanya diperlukan oleh nginx untuk membuka porta di bawah ini IPPORT_RESERVED(mis. Porta di bawah 1024) dan / atau file log tertentu untuk menulis.

    Namun, tergantung pada $PATHpengaturan Anda, Anda mungkin perlu menentukan path lengkap - misalnya /usr/sbin/nginx -V,, atau memang digunakan sudountuk memiliki /sbin/direktori yang sesuai dimasukkan dalam $PATH.

  • Dimulai dengan rilis nginx yang lebih baru - sejak nginx 1.9.11(Februari 2016) - modul yang dapat dimuat secara dinamis sekarang juga didukung - http://nginx.org/r/load_module - dengan bantuan load_modulearahan.


1

nginx -V tidak menunjukkan semua modul, itu menunjukkan sekitar 20 modul untuk saya.

Saya menggunakan strings /usr/sbin/nginx|grep _module|grep -v configure| sortyang mencantumkan semua 200+ modul di nginx saya.

Saya juga mencoba objdumptetapi sepertinya nginx dalam instalasi saya telah biner dilucuti.

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.