Nginxがコンパイルされたフラグを確認するにはどうすればよいですか?


227

nginxインストールに追加されたモジュールを確認するにはどうすればよいですか?


7
別の言い方をすれば、「Nginxがどのフラグでコンパイルされているかをどのように確認できますか?」です。それを追加して検索性を高めたかっただけです。
ネイサンロング

回答:


291

nginx -V設定されたすべてのモジュールをリストします。明示的なenable / loadコマンドはありません。


8
noobsに関する注意: rootユーザーとしてログインしていない場合、コマンドはsudo nginx -V
–its_me

4
私が使用する必要はありませんでしたsudoUbuntuの14.04で
Asfand Qazi

5
このパラメーターでは大文字と小文字が区別されることに注意してください。小文字の「-v」を使用すると、バージョン番号のみが取得されます。大文字の「-V」は、Nginxバイナリのコンパイルに使用されるすべてのモジュールのリストを含む完全な構成を提供します。
イリダン

1
それはそうです、いくつかのシステムが持っていないかもしれませんように$PATH、非スーパーユーザのために適切にセットをすべて省略するsbinディレクトリを、そう、あなたがデーモン(例えば、の完全なパスを指定する必要があります/usr/sbin/nginx -V)、または実際にちょうど使用しますsudo
cnst

@its_me ...実行するのにおそらくsudoは必要ありませんnginx -V
Carson Reinke

64

差分可能なワンライナー:

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

2つの環境を比較するのに便利です:

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

編集:

これには--withoutモジュールコンパイルフラグが含まれていることを正しく指摘していただいたRoman Newazaに感謝します。私は--withoutフラグを使用しておらず、モジュールリストを取得することに焦点を合わせていたため、それを把握できませんでした。ワンライナーは、次のように2つのインストール間でフラグをdiffコンパイルするのに役立つように変更できます。

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

次と同じです:

2>&1 nginx -V | xargs -n1

sortコンパイルフラグの特異な順序を正規化し、tr再び割り当てをdiff-able行に分割するために、それをパイプすることもあります。最終結果:

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

sort両方のリモートホストで同じ動作をする場合(つまり、両方がGNUまたはBSDである場合)に機能します。あなたはBSDする(Mac OS X)へのLinuxを比較する場合は、単に移動| sort | tr = '\n'のうちの一部をlsmodnローカルシェルにsort一貫性があるでしょう:

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

メシエですが、動作します。


2
2>&1 nginx -V | tr -- - '\n' | grep _moduleコマンドは、インストールされた-*オプションなしでリストするため、まったく間違っています!
ロマンニューザ

素晴らしい答え。興味がないのに、なぜ2>&1を前に置くのですか。私が見たことから、それはより珍しいことですか?
cavalcade

@MattTaggは、使用されるまで前面にあります。その後、いずれかのコマンドの最後にあります。
kmarsh

3
  • nginx -Vコマンド(大文字のV)は、すべてのモジュール、ならびに他のコンパイル時オプションが表示されます。

    %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 %

    sudoスーパーユーザーのパワーは、nginxが下位のポートIPPORT_RESERVED(1024未満のポートなどや特定のログファイルを書き込むためにのみ必要とするため、このコマンドは必要ありません。

    ただし、$PATH設定に応じて、フルパスを指定する必要がある場合があります。たとえば/usr/sbin/nginx -V、または、実際sudoに適切な/sbin/ディレクトリを$PATH

  • 新しいnginx 1.9.112016年2月以降の新しいnginxリリースから、動的にロード可能なモジュールもサポートされるようになりました— http://nginx.org/r/load_moduleload_moduleディレクティブの助けを借りて。


1

nginx -V すべてのモジュールが表示されるわけではなく、約20個のモジュールが表示されます。

strings /usr/sbin/nginx|grep _module|grep -v configure| sortはnginxの200+モジュールすべてをリストします。

私も試しましたobjdumpが、インストール中のnginxのバイナリが削除されたようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.