nginx -v输出第二行configure arguments是判断模块支持的第一依据,含--with-启用、--without-禁用及--add-module第三方模块信息,配合grep可快速验证ssl、http/2等关键功能是否编译进二进制。

直接运行 nginx -V(注意是大写 V)就能获取模块排查所需的核心信息——它输出的 configure arguments 行,明确列出了所有静态编译进 Nginx 的模块,是判断“当前二进制是否支持某功能”的第一依据。
看懂 -V 输出的两行结构
执行 nginx -V 会输出两行:
- 第一行:纯版本号,例如
nginx version: nginx/1.24.0 - 第二行:完整的 configure 命令参数,以
configure arguments:开头,里面包含所有模块开关、路径和编译选项
真正有用的模块信息全在第二行。比如出现 --with-http_ssl_module,说明 HTTPS 功能已内置;出现 --without-http_rewrite_module,则重写功能被显式禁用。
快速定位关键模块是否存在
不用通读整行长输出,用 grep 精准过滤:
- 查 SSL 支持:
nginx -V 2>&1 | grep with-http_ssl_module - 查 Gzip 压缩:
nginx -V 2>&1 | grep with-http_gzip_module - 查 HTTP/2:
nginx -V 2>&1 | grep with-http_v2_module - 查第三方模块:
nginx -V 2>&1 | grep add-module
有输出即表示启用;无输出且没看到对应 --without- 项,通常意味着该模块未编译(Nginx 官方默认不启用部分模块,如 stub_status)。
区分静态模块与动态模块
nginx -V 只反映静态模块和编译时加入的动态模块路径(--add-dynamic-module=),不体现运行时加载的 .so 文件:
- 静态模块:出现在
--with-xxx-module中,随 Nginx 启动自动可用 - 动态模块:不会显示在 -V 输出里,需检查配置中是否有
load_module modules/xxx.so;,再确认文件是否存在、权限是否正确 - 验证动态模块是否生效:
nginx -t会报错(如路径不对、ABI 不匹配),这是最直接的检测方式
确认模块是否真正可用
编译参数存在 ≠ 功能就一定可用。还需三步验证:
- 运行
nginx -t检查配置语法,尤其含新模块指令的 location 或 server 块 - 查看错误日志:
tail -n 20 /var/log/nginx/error.log,留意 “module not found” 或 “directive is not supported” 类提示 - 做简易功能测试:例如对开启
gzip on的接口发请求,用curl -I http://host/path看响应头是否含Content-Encoding: gzip











