Pregunta ¿Cómo puedo ver con qué banderas se compiló Nginx?


¿Cómo puedo verificar qué módulos se han agregado a una instalación de nginx?


211
2018-01-17 20:42


origen


Otra forma de decir esto es "¿cómo puedo ver con qué banderas se compiló Nginx?" Solo quería añadir eso para aumentar la capacidad de búsqueda. - Nathan Long


Respuestas:


nginx -V Listará todos los módulos configurados. No hay un comando explícito de habilitación / carga.


268
2018-01-17 21:35



Nota para los noobs: Si no ha iniciado sesión como usuario root, el comando sería sudo nginx -V - its_me
No necesito usar sudo en Ubuntu 14.04 - Asfand Qazi
Tenga en cuenta que este parámetro distingue entre mayúsculas y minúsculas. Si usa minúsculas "-v" solo obtendrá el número de versión. La "-V" mayúscula le brinda una configuración completa que incluye una lista de todos los módulos utilizados para compilar el binario Nginx. - Illidan
Parece como algunos sistemas pueden no tener la $PATH configurado correctamente para no superusuarios, omitiendo todas las sbin directorios, por lo que es posible que tenga que especificar la ruta completa del daemon (por ejemplo, /usr/sbin/nginx -V), o de hecho solo uso sudo. - cnst


Difusible de una sola línea:

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

Conveniente para comparar dos ambientes:

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 módulo de compilación de banderas. No estoy usando --without Banderas y solo estaba concentrado 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, como esto:

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

que es lo mismo que

2>&1 nginx -V | xargs -n1

Tal vez también canalizar eso a través sort para normalizar el ordenamiento idiosincrásico de banderas de compilación y tr de nuevo para dividir las asignaciones en líneas difíciles. 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 sort se 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 fuera de lsmodn a la concha 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.


60
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module el comando es totalmente incorrecto ya que enumera sin- * opciones como instaladas! - Roman Newaza
respuesta impresionante fuera de interés ¿por qué pones 2> & 1 en frente. Por lo que he visto eso es más inusual? - cavalcade
@MattTagg solo está delante hasta que se usa. Entonces está al final de cada comando. - kmarsh


  • los nginx -V comando (mayúscula V) mostrará una lista de 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 nunca hay necesidad de sudo para este comando, ya que nginx solo necesitaría poderes de superusuario para abrir puertos a continuación IPPORT_RESERVED (por ejemplo, puertos por debajo de 1024) y / o ciertos archivos de registro para escribir.

    Sin embargo, dependiendo de su $PATH configuración, puede que necesite especificar la ruta completa, por ejemplo, /usr/sbin/nginx -V, o incluso usar sudo por tener el apropiado /sbin/ directorio se incluirá en el $PATH.

  • A partir de las nuevas versiones de nginx - desde nginx 1.9.11 (Febrero 2016) - Los módulos cargables dinámicamente ahora son compatibles, también - http://nginx.org/r/load_module - con la ayuda del load_module directiva.


3
2017-08-26 19:06