最直接有效的方法是运行 nginx -v 查看编译参数,从中识别静态模块;动态模块需通过 load_module 指令、文件存在性和 nginx -t 验证。

最直接有效的方法是运行 nginx -V(注意大写 V),它会输出编译时的完整配置参数,从中可以明确识别哪些模块被静态编译进当前 Nginx 二进制文件。
用 nginx -V 查看静态模块列表
执行命令:
nginx -V
输出通常有两行:第一行是版本号(如 nginx version: nginx/1.24.0),第二行是完整的 configure 参数。重点看第二行中以 --with- 开头的选项,它们代表启用的模块,例如:
-
--with-http_ssl_module→ HTTPS 支持已编译 -
--with-http_gzip_static_module→ 可直接提供 .gz 文件 -
--with-stream→ 已启用四层 TCP/UDP 代理能力 -
--without-mail_pop3_module→ POP3 模块未编译 -
--add-module=/path/to/echo-nginx-module→ 第三方模块已集成
这些参数是编译时决定的,反映当前 Nginx 二进制文件“自带”的能力,无需额外加载即可使用。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
检查动态模块是否已加载
动态模块(.so 文件)不会出现在 nginx -V 输出中,需结合配置和文件系统确认:
- 搜索配置文件中的
load_module指令:
grep "load_module" /etc/nginx/nginx.conf /etc/nginx/modules-enabled/* 2>/dev/null - 查看模块文件是否存在(常见路径):
ls /usr/lib/nginx/modules/*.so 或 ls /etc/nginx/modules/*.so - 验证语法和加载状态:
nginx -t —— 若模块路径错误、架构不匹配或依赖缺失,会明确报错
快速筛选常用模块是否在编译参数中
避免人工翻找长输出,可用管道高效过滤:
- 列出所有带
with-的模块项:
nginx -V 2>&1 | grep -o '\--with[^ ]*module' - 精准检查 SSL 和 Rewrite 是否启用:
nginx -V 2>&1 | grep -E "(with-http_ssl_module|with-http_rewrite_module)" - 只判断 SSL 是否存在(返回空则未启用):
nginx -V 2>&1 | grep -q 'with-http_ssl_module' && echo "SSL enabled"
补充说明:默认内置模块可查源码 auto/options
如果你有原始 Nginx 源码包(如 nginx-1.24.0),进入 auto/ 目录运行:
grep "=YES" options
会显示所有默认启用的模块名(如 HTTP_REWRITE=YES),但该方式仅适用于你手头有对应版本源码,且不能反映实际安装后的状态。










