一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 中 Virtual Host 如何配置状态页

时间:2026-09-03 18:48:49 编辑:袖梨 来源:一聚教程网

Nginx虚拟主机无法单独配置状态页,因stub_status模块提供的是全局进程级统计;可在任一server块中启用/status路径访问汇总数据,但所有虚拟主机返回相同指标,且需确保模块已编译启用并做好访问控制。

Nginx 中 Virtual Host(虚拟主机)本身不支持单独配置状态页,因为 ngx_http_stub_status_module 提供的状态页是全局服务器级的监控接口,不是按 server 块隔离的。也就是说,无论你定义多少个 server{}(即多少个虚拟主机),/status/nginx_status 返回的都是整个 Nginx 进程的汇总统计,而非某个域名或站点的独立数据。

但你可以在某个虚拟主机的配置中启用并暴露状态页,只要注意以下几点:

✅ 状态页必须放在某个 server 块内,且路径需明确

比如你想让 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 共享“专属”状态

你可以在不同 server 块里都配 location /status,但它们指向的是同一个统计源。例如:

  1. www.cat.com/status → 显示全站连接数、请求数等
  2. www.dog.com/status → 显示完全相同的数据,不是 dog 站点独有

所以它不是“每个虚拟主机一个状态页”,而是“每个虚拟主机可以提供一个入口访问全局状态”。

✅ 安全建议(强烈推荐)

  1. 不要开放给公网(避免信息泄露和被滥用)
  2. 配合 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

不复杂但容易忽略。

热门栏目