<p>最直接方式是运行 nginx -V 查看编译参数,其中 --with- 和 --without- 开头的选项表明静态模块的启用或禁用状态;动态模块需检查 load_module 指令及对应 .so 文件是否存在,并通过 nginx -t 验证加载。</p>

在 Nginx 中,查看已安装模块最直接有效的方式是使用 nginx -V 命令(注意是大写 V),它会输出编译时的完整配置参数,其中就包含所有静态编译进来的模块。
使用 nginx -V 查看编译参数和模块列表
执行以下命令:
nginx -V
输出中重点关注 --with- 和 --without- 开头的选项,例如:
-
--with-http_ssl_module表示启用了 HTTPS 支持 -
--with-http_gzip_static_module表示支持预压缩的 .gz 文件服务 -
--with-stream表示启用了 TCP/UDP 四层代理模块 -
--without-mail_pop3_module表示未编译 POP3 邮件模块
这些参数反映了 Nginx 编译时启用或禁用的模块,即当前运行版本所“自带”的模块能力。
区分静态模块与动态模块
Nginx 1.9.11+ 支持动态加载模块(.so 文件),这类模块不会出现在 nginx -V 的编译参数里,但可通过以下方式确认:
- 检查配置目录下是否有
load_module指令,例如:load_module modules/ngx_http_geoip2_module.so; - 查看模块文件是否存在:
ls /usr/lib/nginx/modules/或ls /etc/nginx/modules/(路径依安装方式而异) - 运行
nginx -t可验证动态模块是否被正确加载(若路径错误或版本不匹配会报错)
快速筛选常用模块是否启用
如果只想确认某个特定模块(如 rewrite、gzip、ssl)是否存在,可结合 grep 简化查看:
nginx -V 2>&1 | grep -o with-http-[a-z]*-module
或更精准地查 SSL 和 Rewrite:
nginx -V 2>&1 | grep -E "(with-http_ssl_module|with-http_rewrite_module)"
注意:rewrite 模块依赖 PCRE 库,即使显示启用,也需确保配置中实际使用了 rewrite 指令且语法正确。
验证模块是否真正生效
编译参数只说明模块被集成,不代表功能可用。建议进一步验证:
- 检查 Nginx 配置语法:
nginx -t - 查看错误日志中是否有关于模块加载失败的提示:
tail -f /var/log/nginx/error.log - 对关键模块做简单测试,比如访问一个启用了
gzip on的 location,用 curl 检查响应头是否有Content-Encoding: gzip

















