Відповіді:
nginx -V
відобразить список всіх налаштованих модулів. Немає явної команди включення / завантаження.
sudo nginx -V
sudo
на Ubuntu 14.04
nginx -V
Відмінна однолінійка:
2>&1 nginx -V | tr -- - '\n' | grep _module
Зручно для порівняння двох середовищ:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Редагувати:
Дякую, Роман Ньюаза, що правильно вказав, що це включає --without
прапорці для компіляції модулів. Я не використовую --without
прапори і був просто зосереджений на отриманні списку модулів, тому я цього не зрозумів; однолінійку можна модифікувати, щоб допомогти розбивати прапорці між двома установками, наприклад:
2>&1 nginx -V | tr ' ' '\n'
що те саме, що:
2>&1 nginx -V | xargs -n1
Можливо, також, sort
щоб нормалізувати ідіосинкратичний упорядкування збірних прапорів і tr
знову розділити завдання на різні лінії. Кінцевий результат:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
Це працює, якщо sort
поводиться однаково на обох віддалених хостах (тобто вони обидва GNU або BSD). Якщо ви порівнюєте Linux з BSD (Mac OS X), просто перемістіть | sort | tr = '\n'
фрагмент із lsmodn
локальної оболонки, де sort
буде послідовно:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
Мессьє, але це працює.
2>&1 nginx -V | tr -- - '\n' | grep _module
команда абсолютно неправильна, оскільки вона містить список встановлених опцій без *!
nginx -V
Команда (прописні V) будуть перераховані всі модулі, а також інші параметри компіляції:
%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
%
Зауважте, що sudo
в цій команді ніколи не виникає потреби , оскільки надпотужні повноваження знадобляться лише nginx для відкриття портів нижче IPPORT_RESERVED
(наприклад, портів нижче 1024) та / або певних файлів журналів для запису.
Однак, залежно від ваших $PATH
налаштувань, вам може знадобитися вказати повний шлях - наприклад /usr/sbin/nginx -V
, або дійсно використовувати sudo
для /sbin/
включення відповідного каталогу в $PATH
.
Починаючи з нових випусків nginx - з nginx 1.9.11
(лютого 2016 року) - тепер підтримуються динамічно завантажувані модулі - http://nginx.org/r/load_module - за допомогою load_module
директиви.
nginx -V
показує не всі модулі, він показує приблизно 20 модулів для мене.
Я використовую strings /usr/sbin/nginx|grep _module|grep -v configure| sort
який перераховує всі 200+ модулів у моїй nginx.
Я також спробував, objdump
але схоже, що в nginx у моїй установці було знято бінарний файл.