Answers:
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)
编辑:
谢谢Roman Newaza,他正确地指出了其中包括--without
模块编译标志。我没有使用--without
标志,只是专注于获取模块列表,所以我没有注意到。可以修改单层代码,以帮助在2个安装之间区分编译标志,如下所示:
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年2月起),现在也通过该指令支持动态可加载模块-http : load_module
//nginx.org/r/load_module。