Comment puis-je vérifier quels modules ont été ajoutés à une installation nginx ?
Réponses
Trop de publicités?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.
-
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 utilisersudo
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 lload_module
directive.
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.