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。