nginx模块启用与禁用取决于安装方式:包管理器安装模块固定,源码编译可按需开关;通过nginx -v或nginx -m查看已启用模块,编译时用--with-启用、--without-禁用,动态模块支持load_module加载与注释卸载。

Nginx 模块的启用与禁用,取决于安装方式:包管理器安装(如 apt/yum)通常使用预编译版本,模块是固定启用的;而源码编译安装才真正支持按需启停模块。
查看当前已启用的模块
运行以下命令可列出所有已编译进 Nginx 的模块:
-
nginx -V 2>&1 | grep -o with-—— 显示所有以--with-开头的启用模块参数 -
nginx -m—— 直接输出静态编译模块和动态加载模块列表(含 enabled/disabled 状态) - 检查
ngx_http_stub_status_module是否启用:nginx -V 2>&1 | grep -o with-http_stub_status_module,有输出即表示已启用
源码编译时启用或禁用模块
在执行 ./configure 阶段,通过参数控制模块开关:
- 启用模块:添加
--with-模块名,例如--with-http_ssl_module、--with-http_realip_module - 禁用模块:添加
--without-模块名,例如--without-http_autoindex_module(禁用目录索引) - 注意:部分核心模块(如
http、events)无法禁用;--with-xxx和--without-xxx不能对同一模块同时指定
动态模块的加载与卸载
从 Nginx 1.9.11 起支持动态模块(.so 文件),无需重新编译即可增减功能:
- 编译时加
--add-dynamic-module=/path/to/module生成 .so 文件 - 在
nginx.conf的main上下文中用load_module /path/to/module.so;加载(必须放在 events 前) - 注释或删除
load_module行即相当于“禁用”,重载配置后生效 - 动态模块不支持热卸载,修改后需
nginx -s reload或重启进程
常见模块用途简列
便于你判断是否需要启用:
-
http_ssl_module:提供 HTTPS 支持(必须启用才能监听 443) -
http_stub_status_module:暴露/status接口,返回连接/请求统计 -
http_realip_module:从X-Forwarded-For等头中还原真实客户端 IP -
http_gzip_module:启用响应压缩(默认已编译,但需在配置中开启gzip on) -
http_upstream_module:实现反向代理与负载均衡(基础功能,几乎必启)











