252 votes

Comment puis-je voir avec quels drapeaux Nginx a été compilé ?

Comment puis-je vérifier quels modules ont été ajoutés à une installation nginx ?

8 votes

Une autre façon de dire cela est "comment puis-je voir avec quels drapeaux Nginx a été compilé ?". Je voulais juste ajouter cela pour augmenter la facilité de recherche.

310voto

lanoxx Points 1081

nginx -V listera tous les modules configurés. Il n'y a pas de commande explicite enable/load.

73voto

al-x Points 811

Une phrase à retenir :

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)

EDIT :

Merci, Roman Newaza, d'avoir correctement souligné que cela inclut --without drapeaux de compilation du module. Je n'utilise pas --without et j'étais juste concentré sur l'obtention de la liste des modules, donc je n'ai pas vu cela ; la ligne unique peut être modifiée pour aider à différencier les drapeaux de compilation entre 2 installations, comme ceci :

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

ce qui revient à dire :

2>&1 nginx -V | xargs -n1

Peut être aussi faire passer ça par sort pour normaliser l'ordre idiosyncrasique des indicateurs de compilation et tr à nouveau pour répartir les affectations sur des lignes différenciables. 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 sort se comporte de la même manière sur les deux hôtes distants (c'est-à-dire qu'ils sont tous deux GNU ou BSD). Si vous comparez Linux à BSD (Mac OS X), il suffit de déplacer l'élément | sort | tr = '\n' de la part de lsmodn dans le Shell local où sort 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')

Plus gros, mais ça marche.

7voto

nullptr Points 1652

nginx -V ne montre pas tous les modules, il en montre une vingtaine pour moi.

Yo uso strings /usr/sbin/nginx|grep _module|grep -v configure| sort qui liste les 200+ modules de mon nginx.

J'ai aussi essayé objdump mais il semble que le nginx de mon installation avait le binaire dépouillé.

4voto

cnst Points 12508
  • Le site nginx -V (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 qu'il n'y a jamais besoin de sudo pour cette commande, car les pouvoirs du super-utilisateur ne seront nécessaires à nginx que pour ouvrir les ports inférieurs à 1 000 euros. IPPORT_RESERVED (par exemple, les ports inférieurs à 1024) et/ou certains fichiers journaux pour l'écriture.

    Cependant, en fonction de votre $PATH vous devrez peut-être spécifier le chemin complet - par exemple, /usr/sbin/nginx -V ou bien utiliser sudo pour avoir les /sbin/ soit inclus dans le répertoire $PATH .

  • Démarrage avec les nouvelles versions de nginx - depuis nginx 1.9.11 (février 2016) - les modules à chargement dynamique sont désormais pris en charge aussi - http://nginx.org/r/load_module - avec l'aide de l load_module directive.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X