Как я могу увидеть, с каких флагов был скомпилирован Nginx?
Как проверить, какие модули были добавлены в установку nginx?
3 ответа
nginx -V
отобразит все настроенные модули. Нет явной команды enable /load.
Дифференциальный однострочный:
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)
EDIT:
Спасибо, Роман Ньюаза, за правильное указание, что это включает в себя модуль --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')
Мессье, но он работает.
-
В команде
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
.