启用 stub_status 模块需在 configure 时添加 --with-http_stub_status_module 参数,该模块自 0.7.1 内置但必须显式启用,1.9.0+ 版本亦需此参数,否则配置报错;编译后用 nginx -V | grep 验证,且仅支持静态编译、不可动态加载。

要在源码编译 Nginx 时启用 stub_status 模块,关键是在 ./configure 阶段显式加入 --with-http_stub_status_module 参数。该模块自 0.7.1 起内置,但 1.9.0+ 版本虽默认编译进主干,仍需手动启用开关,否则配置中写 stub_status 会报 “unknown directive” 错误。
确认目标版本支持且无需额外下载
现代稳定版(如 1.20.x、1.22.x、1.24.x、1.26.x)均原生包含该模块,源码位于 src/http/modules/ngx_http_stub_status_module.c。你不需要单独找模块代码,只要 configure 时带上参数即可。
编译时必须添加 --with-http_stub_status_module
在解压源码后执行 configure 命令,把该参数和其他常用模块一并写入(顺序无关):
- 这是唯一必需项,拼错、漏掉或加成
--with-stub-status-module等变体均无效 - 典型完整示例(含基础功能):
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_stub_status_module
之后运行 make && sudo make install 完成安装。
验证模块是否真正编译进二进制
安装完成后立即检查:
- 执行
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o with-http_stub_status_module - 若有输出,说明成功内建;若无,configure 阶段漏了参数,必须重新编译
- 该模块不支持动态加载,
load_module无法补救
配置 location 启用状态页(仅在编译成功后有效)
模块就绪后,在某个 server 块中添加安全的 location:
- 路径名可自定义(如
/nginx_status或/status),但避免用通用名如/status,以防与第三方模块冲突 -
stub_status没有on或off参数,写成stub_status on;是语法错误(Nginx 1.19+ 会拒绝加载) - 务必加访问控制,例如只允许本地或内网访问,并关闭日志:
location /nginx_status {
stub_status;
access_log off;
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
}











