Réponses:
nginx -V
listera tous les modules configurés. Il n'y a pas de commande d'activation / chargement explicite.
sudo nginx -V
sudo
Ubuntu 14.04
nginx -V
Diffilable one-liner:
2>&1 nginx -V | tr -- - '\n' | grep _module
Pratique pour comparer deux environnements:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
MODIFIER:
Merci, Roman Newaza, d’avoir correctement indiqué que cela inclut --without
les indicateurs de compilation de module. Je n'utilise pas de --without
drapeaux et je voulais juste obtenir la liste des modules, alors je ne l'ai pas comprise. one-liner peut être modifié pour faciliter la compilation des drapeaux entre 2 installations, comme ceci:
2>&1 nginx -V | tr ' ' '\n'
qui est le même que:
2>&1 nginx -V | xargs -n1
Peut-être aussi dirigerez-vous cela sort
pour normaliser l'ordre particulier d'indicateurs de compilation et tr
diviser à nouveau les affectations sur des lignes différentes. Résultat final:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Cela fonctionne si le sort
comportement est le même sur les deux hôtes distants (c’est-à-dire qu’ils sont à la fois GNU ou BSD). Si vous comparez Linux à BSD (Mac OS X), déplacez simplement l' | sort | tr = '\n'
élément lsmodn
vers le shell local où sort
il sera cohérent:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
Messier, mais ça marche.
2>&1 nginx -V | tr -- - '\n' | grep _module
La commande est totalement fausse car elle liste les options sans- * telles qu'installées!
La nginx -V
commande (V majuscule) listera tous les modules, ainsi que d'autres options de compilation:
%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
%
Notez que sudo
cette commande n’est jamais nécessaire , car nginx n’aurait besoin que des pouvoirs de superutilisateur pour ouvrir les ports situés au-dessous IPPORT_RESERVED
(par exemple, les ports inférieurs à 1024) et / ou certains fichiers journaux en écriture.
Toutefois, en fonction de vos $PATH
paramètres, vous devrez peut-être spécifier le chemin complet - par exemple /usr/sbin/nginx -V
, ou bien utiliser sudo
pour que le /sbin/
répertoire approprié soit inclus dans le fichier $PATH
.
À partir des nouvelles versions de nginx - depuis nginx 1.9.11
(février 2016) - les modules chargeables dynamiquement sont désormais également pris en charge - http://nginx.org/r/load_module - à l'aide de la load_module
directive.
nginx -V
ne montre pas tous les modules, il montre environ 20 modules pour moi.
J'utilise strings /usr/sbin/nginx|grep _module|grep -v configure| sort
qui répertorie plus de 200 modules dans mon nginx.
J'ai aussi essayé, objdump
mais on dirait que le nginx de mon installation a dépouillé le binaire.