Como posso ver com quais flags o Nginx foi compilado?

213

Como posso verificar quais módulos foram adicionados a uma instalação nginx?

    
por Nisanio 17.01.2011 / 21:42

3 respostas

271

nginx -V listará todos os módulos configurados. Não há comando explícito enable / load.

    
por 17.01.2011 / 22:35
60

Uma linha de prova:

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

Conveniente para comparar dois ambientes:

lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

EDITAR:

Obrigado, Roman Newaza, por apontar corretamente que isso inclui --without module compile flags. Eu não estou usando --without flags e estava focado apenas em obter a lista de módulos, então eu não entendi isso; o one-liner pode ser modificado para ajudar a compilar os flags entre duas instalações, como esta:

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

que é o mesmo que:

2>&1 nginx -V | xargs -n1

Talvez também canalize isso por meio de sort para normalizar a ordenação idiossincrática dos sinalizadores de compilação e tr novamente para dividir atribuições em linhas diferíveis. Resultado final:

lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

Isso funciona se sort se comportar da mesma maneira em ambos os hosts remotos (isto é, ambos são GNU ou BSD). Se você estiver comparando o Linux ao BSD (Mac OS X), basta mover a parte | sort | tr = '\n' de lsmodn para o shell local, onde 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')

Messier, mas funciona.

    
por 25.01.2013 / 21:30
3
  • O comando nginx -V (letras maiúsculas V) listará todos os módulos, assim como outras opções de tempo de compilação:

    %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 %

    Observe que nunca há necessidade de sudo para este comando, pois os poderes de superusuário seriam necessários apenas para nginx abertura de portas abaixo de IPPORT_RESERVED (por exemplo, portas abaixo de 1024) e / ou certos arquivos de log para escrever.

    No entanto, dependendo das suas configurações de $PATH , você pode precisar especificar o caminho completo - por exemplo, /usr/sbin/nginx -V ou usar sudo para ter o diretório /sbin/ apropriado incluído no $PATH .

  • Começando com versões mais recentes do nginx - desde nginx 1.9.11 (fevereiro de 2016) - módulos carregáveis dinamicamente agora também são suportados - link - com a ajuda da diretiva load_module .

por 26.08.2017 / 21:06