Antworten:
nginx -V
listet alle konfigurierten Module auf. Es gibt keinen expliziten Befehl zum Aktivieren / Laden.
sudo nginx -V
sudo
auf Ubuntu 14.04
$PATH
Einstellung für Nicht-Superuser möglicherweise nicht richtig ist sbin
, wenn alle Verzeichnisse weggelassen werden. Daher müssen Sie möglicherweise den vollständigen Pfad des Daemons angeben (z. B. /usr/sbin/nginx -V
) oder nur verwenden sudo
.
nginx -V
Schwieriger Einzeiler:
2>&1 nginx -V | tr -- - '\n' | grep _module
Praktisch für den Vergleich zweier Umgebungen:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
BEARBEITEN:
Vielen Dank, Roman Newaza, dass Sie richtig darauf hingewiesen haben, dass dies auch --without
Flaggen zum Kompilieren von Modulen enthält . Ich benutze keine --without
Flags und habe mich nur darauf konzentriert, die Modulliste zu erhalten, also habe ich das nicht verstanden. Der Einzeiler kann geändert werden, um das Kompilieren von Flags zwischen zwei Installationen zu erleichtern:
2>&1 nginx -V | tr ' ' '\n'
das ist das gleiche wie:
2>&1 nginx -V | xargs -n1
Vielleicht leiten Sie das auch durch sort
, um die idiosynkratische Reihenfolge der Kompilierungsflags zu normalisieren und tr
die Zuweisungen erneut auf verschiedene Zeilen aufzuteilen. Endergebnis:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Das funktioniert, wenn sort
sich beide Remote-Hosts gleich verhalten (dh beide sind GNU oder BSD). Wenn Sie Linux auf BSD (Mac OS X) vergleichen, nur das bewegt | sort | tr = '\n'
Stück aus lsmodn
auf dem lokal Shell , in sort
Einklang stehen wird:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
Messier, aber es funktioniert.
2>&1 nginx -V | tr -- - '\n' | grep _module
Befehl ist völlig falsch, da er ohne installierte * Optionen auflistet!
Der nginx -V
Befehl (V in Großbuchstaben) listet alle Module sowie andere Optionen zur Kompilierungszeit auf:
%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
%
Beachten Sie, dass sudo
für diesen Befehl keine Notwendigkeit besteht , da Superuser-Berechtigungen nur von nginx zum Öffnen von Ports unter IPPORT_RESERVED
(z. B. Ports unter 1024) und / oder bestimmten Protokolldateien zum Schreiben benötigt werden.
Abhängig von Ihren $PATH
Einstellungen müssen Sie jedoch möglicherweise entweder den vollständigen Pfad angeben - z. B. /usr/sbin/nginx -V
oder sudo
das entsprechende /sbin/
Verzeichnis in das Verzeichnis einfügen $PATH
.
Ab neueren nginx-Releases - seit nginx 1.9.11
(Februar 2016) - werden nun auch dynamisch ladbare Module unterstützt - http://nginx.org/r/load_module - mit Hilfe der load_module
Direktive.
nginx -V
zeigt nicht alle Module, es zeigt etwa 20 Module für mich.
Ich benutze strings /usr/sbin/nginx|grep _module|grep -v configure| sort
die Liste aller 200+ Module in meinem Nginx.
Ich habe es auch versucht, objdump
aber es sieht so aus, als hätte der Nginx in meiner Installation die Binärdatei entfernt.