Nginxインストールに追加されたモジュールを確認するにはどうすればよいですか?
nginx -V
は、すべての構成済みモジュールをリストします。明示的なenable/loadコマンドはありません。
差分可能なワンライナー:
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')
メシエですが、機能します。
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_module — load_module
ディレクティブの助けを借りて。
nginx -V
はすべてのモジュールを表示するのではなく、約20のモジュールを表示します。
私が使う strings /usr/sbin/nginx|grep _module|grep -v configure| sort
これは私のnginx内のすべての200以上のモジュールをリストします。
私もobjdump
を試しましたが、私のインストールのnginxはバイナリが取り除かれているようです。