Nginx虚拟主机无法单独配置状态页,因stub_status模块提供的是全局进程级统计;可在任一server块中启用/status路径访问汇总数据,但所有虚拟主机返回相同指标,且需确保模块已编译启用并做好访问控制。
Nginx 中 Virtual Host(虚拟主机)本身不支持单独配置状态页,因为 ngx_http_stub_status_module 提供的状态页是全局服务器级的监控接口,不是按 server 块隔离的。也就是说,无论你定义多少个 server{}(即多少个虚拟主机),/status 或 /nginx_status 返回的都是整个 Nginx 进程的汇总统计,而非某个域名或站点的独立数据。
但你可以在某个虚拟主机的配置中启用并暴露状态页,只要注意以下几点:
比如你想让 www.cat.com 这个虚拟主机响应 /status 请求:
server {listen 80;server_name www.cat.com;root /var/www/cat;index index.html;location / {try_files $uri $uri/ =404;}location /status {stub_status on; # 启用状态模块access_log off;# 不记录访问日志allow 127.0.0.1;# 仅允许本地访问allow 192.168.1.0/24; # 或指定内网IP段deny all;# 拒绝其他所有IP}}
⚠️ 注意:stub_status on; 是旧语法(Nginx < 1.13.10),新版推荐写成 stub_status;(无参数)
状态页功能依赖 --with-http_stub_status_module 编译选项。若你用的是系统包(如 Ubuntu 的 apt install nginx),该模块通常默认启用;但如果是源码编译安装,需确认编译时加了该参数:
nginx -V 2>&1 | grep -o with-http_stub_status_module
没输出即未启用,需重新编译。
你可以在不同 server 块里都配 location /status,但它们指向的是同一个统计源。例如:
www.cat.com/status → 显示全站连接数、请求数等www.dog.com/status → 显示完全相同的数据,不是 dog 站点独有所以它不是“每个虚拟主机一个状态页”,而是“每个虚拟主机可以提供一个入口访问全局状态”。
auth_basic 做基础认证(可选):location /nginx_status {stub_status;auth_basic "Restricted";auth_basic_user_file /etc/nginx/.htpasswd;allow 127.0.0.1;deny all;}
生成密码文件示例:
printf "admin:$(openssl passwd -crypt 123456)n" > /etc/nginx/.htpasswd
不复杂但容易忽略。
Tplink企业版路由器WiFi名称的默认设置介绍(Tplink企业版路由器WiFi名称的默认设置是什么)
Tplink路由器灯常亮无法上网的原因分析(如何解决Tplink路由器灯常亮无法上网的问题)
Tplink千兆企业级路由器自动重启的作用和优势介绍(如何设置Tplink千兆企业级路由器自动重启功能)
一根天线的tplink路由器有哪些(一根天线的Tplink路由器的特点和优势介绍)
tplink路由器外网访问不了nas(Tplink路由器外网访问NAS的原因分析)
Tplink无法搜到路由器的原因分析(如何解决Tplink无法搜到路由器的问题)