Pertanyaan Bagaimana saya bisa melihat bendera mana yang dikompilasi oleh Nginx?


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


211
2018-01-17 20:42




Cara lain untuk mengatakan ini adalah "bagaimana saya bisa melihat bendera mana yang dikompilasi oleh Nginx?" Hanya ingin menambahkannya untuk meningkatkan keterlihatan. - Nathan Long


Jawaban:


nginx -V akan mendaftar semua modul yang dikonfigurasi. Tidak ada perintah enable / load eksplisit.


268
2018-01-17 21:35



Catatan untuk noobs: Jika tidak masuk sebagai pengguna root, perintahnya adalah sudo nginx -V - its_me
Saya tidak perlu menggunakannya sudo pada Ubuntu 14.04 - Asfand Qazi
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 mengompilasi biner Nginx. - Illidan
Kelihatannya seperti beberapa sistem mungkin tidak memiliki $PATH diatur dengan benar untuk non-superuser, menghilangkan semua sbin direktori, jadi, Anda mungkin harus menentukan jalur lengkap daemon (misalnya, /usr/sbin/nginx -V), atau memang hanya digunakan sudo. - cnst


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)

EDIT:

Terima kasih, Roman Newaza, karena dengan tepat menunjukkan bahwa ini termasuk --without modul mengkompilasi bendera. Saya tidak menggunakan --without dan hanya fokus untuk mendapatkan daftar modul, jadi saya tidak menangkapnya; satu-liner dapat dimodifikasi untuk membantu bendera compile diff antara 2 instalasi, seperti ini:

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

yang sama dengan:

2>&1 nginx -V | xargs -n1

Mungkin juga pipa yang lewat sort untuk menormalkan pengaturan idiosynkratik dari compile flags dan tr lagi untuk membagi tugas ke garis 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 sort berperilaku sama pada kedua host jarak jauh (mis. keduanya GNU atau BSD). Jika Anda membandingkan Linux ke BSD (Mac OS X), pindahkan saja | sort | tr = '\n' potongan dari lsmodn ke shell lokal di mana sort akan konsisten:

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 itu berhasil.


60
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module perintah benar-benar salah karena daftar tanpa opsi * * seperti yang diinstal! - Roman Newaza
jawaban yang luar biasa. tidak menarik mengapa Anda menempatkan 2> & 1 di depan. dari apa yang saya lihat, itu lebih tidak biasa? - cavalcade
@MattTagg hanya di depan sampai digunakan. Maka itu di ujung salah satu perintah. - kmarsh


  • Itu nginx -V perintah (huruf besar V) akan mencantumkan semua modul, serta opsi-opsi 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 itu sudo untuk perintah ini, karena kekuatan superuser hanya diperlukan oleh nginx untuk membuka port di bawah ini IPPORT_RESERVED (mis., port di bawah 1024) dan / atau file log tertentu untuk menulis.

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

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


3
2017-08-26 19:06