Respuestas:
nginx -V
enumerará todos los módulos configurados. No hay un comando explícito de habilitar / cargar.
sudo nginx -V
sudo
Ubuntu 14.04
nginx -V
One-liner diferenciable:
2>&1 nginx -V | tr -- - '\n' | grep _module
Conveniente para comparar dos entornos:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
EDITAR:
Gracias, Roman Newaza, por señalar correctamente que esto incluye --without
indicadores de compilación del módulo. No estoy usando --without
banderas y solo estaba enfocado en obtener la lista de módulos, así que no entendí eso; el one-liner se puede modificar para ayudar a diferenciar las banderas de compilación entre 2 instalaciones, de esta manera:
2>&1 nginx -V | tr ' ' '\n'
que es lo mismo que:
2>&1 nginx -V | xargs -n1
Quizás también canalice eso sort
para normalizar el ordenamiento idiosincrásico de los indicadores de compilación y tr
nuevamente para dividir las tareas en líneas divisibles. Resultado final:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Eso funciona si se sort
comporta igual en ambos hosts remotos (es decir, ambos son GNU o BSD). Si está comparando Linux con BSD (Mac OS X), simplemente mueva la | sort | tr = '\n'
pieza lsmodn
al shell local donde sort
será consistente:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
Más desordenado, pero funciona.
2>&1 nginx -V | tr -- - '\n' | grep _module
¡El comando es totalmente incorrecto ya que enumera sin- * opciones instaladas!
El nginx -V
comando (V mayúscula) enumerará todos los módulos, así como otras opciones de tiempo de compilación:
%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
%
Tenga en cuenta que sudo
este comando nunca es necesario , ya que nginx solo necesitaría poderes de superusuario para abrir puertos inferiores IPPORT_RESERVED
(por ejemplo, puertos inferiores a 1024) y / o ciertos archivos de registro para escribir.
Sin embargo, dependiendo de su $PATH
configuración, es posible que deba especificar la ruta completa, por ejemplo /usr/sbin/nginx -V
, o usarla sudo
para que /sbin/
se incluya el directorio apropiado en el $PATH
.
Comenzando con las nuevas versiones de nginx, desde nginx 1.9.11
(febrero de 2016), ahora también se admiten módulos cargables dinámicamente , http://nginx.org/r/load_module , con la ayuda de la load_module
directiva.
nginx -V
no muestra todos los módulos, muestra unos 20 módulos para mí.
Yo uso el strings /usr/sbin/nginx|grep _module|grep -v configure| sort
que enumera todos los más de 200 módulos en mi nginx.
También lo intenté objdump
pero parece que el nginx en mi instalación tenía el binario eliminado.