web-dev-qa-db-ja.com

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

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

236
Nisanio

nginx -Vは、すべての構成済みモジュールをリストします。明示的なenable/loadコマンドはありません。

299
Joris

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

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つのインストール間でフラグを比較コンパイルできるようにすることができます。

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

これは次と同じです:

2>&1 nginx -V | xargs -n1

また、sortを介してパイプし、コンパイルフラグの特異な順序を正規化し、trを再度割り当てて、割り当てを差分可能な行に分割することもできます。最終結果:

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です)。LinuxとBSD(Mac OS X)を比較する場合は、 lsmodn| sort | tr = '\n'をローカルシェルに移動し、sortを一貫させます。

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

メシエですが、機能します。

66
al-x
  • 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リリースから— nginx 1.9.11以降(2016年2月)— 動的にロード可能なモジュールもサポートされるようになりましたhttp://nginx.org/r/load_moduleload_moduleディレクティブの助けを借りて。

3
cnst

nginx -Vはすべてのモジュールを表示するのではなく、約20のモジュールを表示します。

私が使う strings /usr/sbin/nginx|grep _module|grep -v configure| sortこれは私のnginx内のすべての200以上のモジュールをリストします。

私もobjdumpを試しましたが、私のインストールのnginxはバイナリが取り除かれているようです。

2
imel96