Question Comment voir avec quels drapeaux Nginx a été compilé?


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


211
2018-01-17 20:42


origine


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 capacité de recherche. - Nathan Long


Réponses:


nginx -V listera tous les modules configurés. Il n'y a pas de commande active d'activation / de chargement.


268
2018-01-17 21:35



Note pour noobs: Si non connecté en tant qu'utilisateur root, la commande serait sudo nginx -V - its_me
Je n'ai pas eu besoin d'utiliser sudo sur Ubuntu 14.04 - Asfand Qazi
Veuillez noter que ce paramètre est sensible à la casse. Si vous utilisez des minuscules "-v", vous n'obtiendrez que le numéro de version. Les majuscules "-V" vous donnent une configuration complète, y compris une liste de tous les modules utilisés pour compiler le binaire Nginx. - Illidan
Il semble comme certains systèmes peuvent ne pas avoir la $PATH correctement configuré pour les non-superutilisateurs, en omettant tous les sbin vous devrez peut-être spécifier le chemin complet du démon (par exemple, /usr/sbin/nginx -V), ou bien simplement utiliser sudo. - cnst


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 souligné que cela inclut --without module compiler des drapeaux. Je n'utilise pas --without flags et était juste concentré sur l’obtention de la liste des modules, donc je n’ai pas compris cela; 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 faire passer ça à travers sort normaliser l’ordre idiosyncratique des drapeaux de compilation et tr encore une fois pour diviser 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)

Ça marche si sort se comporte de la même manière 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 le | sort | tr = '\n' pièce sur lsmodn à la coquille locale où sort sera compatible:

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.


60
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module La commande est totalement fausse car elle liste les options sans- * telles qu'elles sont installées! - Roman Newaza
réponse géniale. par intérêt, pourquoi mettez-vous 2> et 1 devant. d'après ce que j'ai vu c'est plus inhabituel? - cavalcade
@ MattTagg c'est seulement devant jusqu'à ce qu'il soit utilisé. Ensuite, c'est à la fin de l'une ou l'autre commande. - kmarsh


  • le 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 qu'il n'y a jamais besoin de sudo pour cette commande, car les pouvoirs de superutilisateur ne seraient nécessaires que par nginx pour ouvrir les ports en dessous IPPORT_RESERVED (par exemple, ports inférieurs à 1024) et / ou certains fichiers de log pour l'écriture.

    Cependant, en fonction de votre $PATH paramètres, vous pouvez soit avoir besoin de spécifier le chemin complet - par exemple, /usr/sbin/nginx -V, ou bien utiliser sudo pour avoir le approprié /sbin/ répertoire soit inclus dans le $PATH.

  • À partir des nouvelles versions de nginx - depuis nginx 1.9.11 (Février 2016) - les modules chargeables dynamiquement sont maintenant supportés, aussi - http://nginx.org/r/load_module - avec l'aide du load_module directif.


3
2017-08-26 19:06