Respostas:
nginx -V
listará todos os módulos configurados. Não há nenhum comando explícito de ativação / carregamento.
sudo nginx -V
sudo
no Ubuntu 14.04
nginx -V
Forro único com capacidade de difusão:
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
sinalizadores de compilação de módulo. Não estou usando --without
sinalizadores e estava apenas focado em obter a lista de módulos, então não entendi; o one-liner pode ser modificado para ajudar a diferenciar compilar sinalizadores entre 2 instalações, assim:
2>&1 nginx -V | tr ' ' '\n'
que é o mesmo que:
2>&1 nginx -V | xargs -n1
Talvez também faça isso sort
para normalizar a ordem idiossincrática de sinalizadores de compilação e tr
novamente para dividir atribuições em linhas diferentes. 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
o mesmo se comportar nos dois hosts remotos (ou seja, ambos são GNU ou BSD). Se você estiver comparando Linux com BSD (Mac OS X), basta mover a | sort | tr = '\n'
peça 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')
Mais bagunçado, mas funciona.
2>&1 nginx -V | tr -- - '\n' | grep _module
O comando está totalmente errado, pois lista sem- * as opções instaladas!
O nginx -V
comando (V maiúsculo) listará todos os módulos, bem como outras opções em 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 sudo
deste comando, pois os poderes de superusuário seriam necessários apenas pelo nginx para abrir portas abaixo IPPORT_RESERVED
(por exemplo, portas abaixo de 1024) e / ou determinados arquivos de log para gravação.
No entanto, dependendo das suas $PATH
configurações, você pode precisar especificar o caminho completo - por exemplo /usr/sbin/nginx -V
, ou realmente usar sudo
para que o /sbin/
diretório apropriado seja incluído no arquivo $PATH
.
A partir das versões mais recentes do nginx - desde nginx 1.9.11
(fevereiro de 2016) - os módulos dinamicamente carregáveis agora também são suportados - http://nginx.org/r/load_module - com a ajuda da load_module
diretiva.
nginx -V
não mostra todos os módulos, mostra cerca de 20 módulos para mim.
Eu uso o strings /usr/sbin/nginx|grep _module|grep -v configure| sort
que lista todos os mais de 200 módulos no meu nginx.
Eu também tentei, objdump
mas parece que o nginx na minha instalação teve o binário removido.