Вопрос: Как я могу увидеть, с каких флагов был скомпилирован Nginx?


Как проверить, какие модули были добавлены в установку nginx?


208
2018-01-17 20:42


Источник


Другой способ сказать это «как я могу увидеть, с каким флагом был скомпилирован Nginx?» Просто хотел добавить это для увеличения возможностей поиска. - Nathan Long


Ответы:


nginx -V перечислит все настроенные модули. Нет явной команды enable / load.


263
2018-01-17 21:35



Примечание для noobs: Если вы не вошли в систему как пользователь root, команда будет sudo nginx -V - its_me
Мне не нужно было использовать sudo на Ubuntu 14.04 - Asfand Qazi
Обратите внимание, что этот параметр чувствителен к регистру. Если вы используете нижний регистр «-v», вы получите только номер версии. Верхний регистр «-V» дает вам полную конфигурацию, включая список всех модулей, используемых для компиляции двоичного файла Nginx. - Illidan
Кажется например, некоторые системы могут не иметь $PATH правильно установить для не-суперпользователей, опуская все sbin каталогов, поэтому вам может потребоваться указать полный путь демона (например, /usr/sbin/nginx -V), или просто использовать sudo, - cnst


Дифференциальный однострочный:

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')

Мессье, но он работает.


57
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module команда абсолютно неверна, поскольку она перечисляет без параметров *, как установлено! - Roman Newaza
удивительный ответ. из интереса, почему вы ставите 2> и 1 впереди. от того, что я видел, это более необычно? - cavalcade
@MattTagg это только спереди, пока оно не используется. Затем он находится в конце любой из команд. - kmarsh


  • 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 директивы.


2
2017-08-26 19:06