Odpowiedzi:
nginx -V
wyświetli listę wszystkich skonfigurowanych modułów. Nie ma wyraźnego polecenia włączenia / ładowania.
sudo nginx -V
sudo
na Ubuntu 14.04
$PATH
poprawnie ustawionego zestawu dla superużytkowników, pomijając wszystkie sbin
katalogi, więc może być konieczne określenie pełnej ścieżki demona (np. /usr/sbin/nginx -V
) Lub użycie sudo
.
nginx -V
Jednowarstwowa z możliwością różnicowania:
2>&1 nginx -V | tr -- - '\n' | grep _module
Wygodny w porównaniu dwóch środowisk:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
EDYTOWAĆ:
Dziękujemy Roman Newaza za prawidłowe wskazanie, że obejmuje to --without
flagi kompilacji modułów. Nie używam --without
flag i skupiłem się na uzyskaniu listy modułów, więc nie złapałem tego; jednolinijkę można zmodyfikować, aby pomóc w kompilowaniu flag między dwiema instalacjami, w następujący sposób:
2>&1 nginx -V | tr ' ' '\n'
który jest taki sam jak:
2>&1 nginx -V | xargs -n1
Być może przepuszczymy to, sort
aby znormalizować idiosynkratyczne porządkowanie flag kompilacji i tr
ponownie podzielić przypisania na trudne linie. Ostateczny wynik:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Działa to, jeśli sort
zachowuje się tak samo na obu zdalnych hostach (tj. Oba są GNU lub BSD). Jeśli porównujesz Linuksa z BSD (Mac OS X), po prostu przenieś | sort | tr = '\n'
kawałek lsmodn
do lokalnej powłoki, gdzie sort
będzie spójny:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
Messier, ale działa.
2>&1 nginx -V | tr -- - '\n' | grep _module
polecenie jest całkowicie niepoprawne, ponieważ wyświetla listę bez zainstalowanych opcji *.
nginx -V
Poleceń (dużymi literami V) będzie lista wszystkich modułów, jak również inne opcje kompilacji:
%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
%
Zauważ, że to polecenie nigdy nie jest potrzebne sudo
, ponieważ uprawnienia superużytkownika byłyby potrzebne tylko dla nginx do otwierania portów poniżej IPPORT_RESERVED
(np. Portów poniżej 1024) i / lub niektórych plików dziennika do zapisu.
Jednak w zależności od $PATH
ustawień może być konieczne podanie pełnej ścieżki - np. /usr/sbin/nginx -V
Lub użycie sudo
do włączenia odpowiedniego /sbin/
katalogu do katalogu $PATH
.
Począwszy od nowszych wersji nginx - od nginx 1.9.11
(luty 2016 r.) - obsługiwane są teraz także moduły dynamicznie ładowane - http://nginx.org/r/load_module - przy pomocy load_module
dyrektywy.
nginx -V
nie pokazuje wszystkich modułów, pokazuje dla mnie około 20 modułów.
Używam, strings /usr/sbin/nginx|grep _module|grep -v configure| sort
który wyświetla listę wszystkich ponad 200 modułów w moim nginx.
Próbowałem też, objdump
ale wygląda na to, że nginx w mojej instalacji miał plik binarny usunięty.