Frage Wie kann ich sehen, mit welchen Flags Nginx kompiliert wurde?


Wie kann ich überprüfen, welche Module zu einer nginx-Installation hinzugefügt wurden?


211
2018-01-17 20:42


Ursprung


Eine andere Möglichkeit, dies zu sagen, ist: "Wie kann ich sehen, mit welchen Flags Nginx kompiliert wurde?" Ich wollte das nur hinzufügen, um die Durchsuchbarkeit zu erhöhen. - Nathan Long


Antworten:


nginx -V listet alle konfigurierten Module auf. Es gibt keinen expliziten Befehl zum Aktivieren / Laden.


268
2018-01-17 21:35



Hinweis für Anfänger: Wenn nicht als Root-Benutzer angemeldet wäre, wäre der Befehl sudo nginx -V - its_me
Ich brauchte nicht zu benutzen sudo auf Ubuntu 14.04 - Asfand Qazi
Bitte beachten Sie, dass bei diesem Parameter zwischen Groß- und Kleinschreibung unterschieden wird. Wenn Sie Kleinbuchstaben "-v" verwenden, erhalten Sie nur die Versionsnummer. Der Großbuchstabe "-V" gibt Ihnen die vollständige Konfiguration mit einer Liste aller Module, die zum Kompilieren der Nginx-Binärdatei verwendet werden. - Illidan
Es scheint wie einige Systeme möglicherweise nicht die $PATH Für Nicht-Superuser richtig einstellen, alle auslassen sbin Verzeichnisse, so müssen Sie möglicherweise den vollständigen Pfad des Daemon angeben (z. B. /usr/sbin/nginx -V), oder einfach nur benutzen sudo. - cnst


Differabler Einzeiler:

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

Geeignet 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, für die korrekte Angabe, dass dies beinhaltet --without Modul kompilieren Flags. Ich benutze nicht --without Flags und war nur darauf konzentriert, die Modulliste zu bekommen, also habe ich das nicht verstanden; Der One-Liner kann modifiziert werden, um Unterschiede zwischen zwei Installationen zu kompilieren:

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

Das ist das gleiche wie:

2>&1 nginx -V | xargs -n1

Vielleicht auch das durchstecken sort Normalisierung der idiosynkratischen Reihenfolge von Kompilierflags und tr erneut, um Zuweisungen auf verschiedene Zeilen zu verteilen. 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 verhält sich auf beiden Remote-Hosts gleich (dh sie sind beide GNU oder BSD). Wenn Sie Linux mit BSD (Mac OS X) vergleichen, verschieben Sie einfach die | sort | tr = '\n' Stück aus lsmodn in die lokale Shell wo sort wird konsistent sein:

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.


60
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module Befehl ist total falsch, da er ohne * Optionen wie installiert auflistet! - Roman Newaza
tolle Antwort. aus Interesse, warum stellst du 2> & 1 vor. von dem, was ich gesehen habe, ist das ungewöhnlicher? - cavalcade
@MattTagg es ist nur vorne, bis es benutzt wird. Dann ist es am Ende eines der Befehle. - kmarsh


  • Das nginx -V Befehl (Großbuchstabe V) listet alle Module sowie andere Kompilierzeitoptionen 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 dies nie nötig ist sudo Für diesen Befehl werden Superuser-Potenzen nur von Nginx benötigt, um darunter die Ports zu öffnen IPPORT_RESERVED (z. B. Ports unter 1024) und / oder bestimmte Log-Dateien zum Schreiben.

    Abhängig von Ihrem $PATH Einstellungen müssen Sie entweder den vollständigen Pfad angeben, z. /usr/sbin/nginx -Voder tatsächlich verwenden sudo um das Passende zu haben /sbin/ Verzeichnis enthalten sein in der $PATH.

  • Beginnend mit neueren nginx-Versionen - seit nginx 1.9.11 (Februar 2016) - dynamisch ladbare Module werden jetzt unterstützt, auch - http://nginx.org/r/load_module - Mit Hilfe der load_module Richtlinie.


3
2017-08-26 19:06