验证nginx内置模块是否成功加载需分四步:一查nginx -v中configure arguments确认编译参数;二看built modules或用ldd/strings检查二进制符号;三用nginx -t配合最小配置测试指令识别;四启动后通过进程、http响应及错误日志确认运行时可用。

源码安装 Nginx 后,验证内置模块是否成功加载,关键不是“有没有装上”,而是“编译时启用的模块,是否真被链接进二进制、并在运行时可用”。这需要分层次验证,不能只看配置文件里写了什么。
查编译参数:确认模块被编译进去了
执行 nginx -V(注意是大写 V),输出中会有一行 configure arguments:。这一行是你当初运行 ./configure 时传入的所有参数。重点检查:
- 是否有
--with-http_ssl_module(HTTPS 支持) - 是否有
--with-http_v2_module(HTTP/2) - 是否有
--with-http_gzip_static_module(预压缩文件支持) - 是否有
--add-module=/path/to/xxx(你加的第三方模块路径)
如果某项启用参数没出现在这里,说明它根本没参与编译,后续再怎么配也无效。
看模块列表:确认二进制包含对应功能符号
执行 nginx -V 的同时,也会列出 built modules:(部分版本支持,尤其较新版本)。如果没有,可用更通用的方式:
- 运行
ldd $(which nginx) | grep -i ssl—— 检查是否链接了 OpenSSL 库(libssl.so) - 运行
strings $(which nginx) | grep -i http_v2—— 查看二进制内是否含 HTTP/2 相关字符串(非绝对,但可辅助判断) - 对 gzip、rewrite、realip 等核心模块,可结合
nginx -t配合最小配置测试其指令是否被识别(见下一条)
试配置语法:用指令触发模块加载检查
很多内置模块的功能,只有在配置中使用对应指令时才会被真正初始化。你可以写一个极简配置,只启用你要验证的模块指令,然后运行 nginx -t:
- 验证 SSL 模块:
listen 443 ssl;+ssl_certificate /dev/null;(路径随意,只要语法合法) - 验证 HTTP/2:
listen 443 ssl http2; - 验证 Gzip:
gzip on; - 验证 Rewrite:
location / { rewrite ^/old$ /new redirect; }
如果 nginx -t 提示 unknown directive "ssl_certificate" 或类似错误,说明对应模块未编译或未启用。
启动后检查进程与日志
启动 Nginx 后,进一步确认模块实际工作:
- 执行
ps aux | grep nginx,确认 master + worker 进程正常存在 - 访问
curl -I http://localhost,看是否返回200 OK,证明基础 HTTP 模块运行正常 - 查看错误日志:
tail -f /usr/local/nginx/logs/error.log,启动时若模块缺失或依赖失败(如找不到libpcre.so),会明确报错,例如undefined symbol: pcre_compile
注意:动态模块(.so)需额外通过 load_module 加载,不在 nginx -V 的 configure 参数中体现,要单独验证其路径和 nginx -t 是否通过。











