未找到 Nginx 状态页面

未找到 Nginx 状态页面

我正在尝试在我的 Centos 7 服务器上启用 Nginx 状态页面。

我从 EPEL 存储库安装了 Nginx,Nginx 内置有状态页面支持:

[root@server ~]# nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

我添加了一个配置文件 /etc/nginx/conf.d/status.conf:

server {
    listen 80;
    server_name localhost;

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

重启后Nginx找不到状态页面:

[root@server ~]# wget http://localhost/nginx_status
--2017-01-06 17:02:09--  http://localhost/nginx_status
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-01-06 17:02:09 ERROR 404: Not Found.

我在网上找到的每个教程或示例都说这些是我应该采取的步骤。为什么我总是得到 404?

答案1

您的server块缺少listen指令:

    listen [::]:80;

此指令告诉 nginx 响应该 的 IPv6 连接server。不幸的是,您忽略了它,并且只响应 IPv4 连接。

但是,由于localhost解析为 IPv6 地址(实际上,IPv6 是 Internet 上所有内容的默认协议),因此您的请求由server默认配置中包含的默认块处理,该块 listenIPv6 上的支持。

您应该格外小心,确保所有IPv6serverlisten(强制性的,即使您还没有全局 IPv6)和 IPv4 块(可选,仅当您使用 IPv4 时)均被阻止。

答案2

我看不出您的配置有什么问题,而且它是 404 而不是 403,这意味着它甚至没有读取该配置,所以我将采取的调试步骤是:

  • 你重启过 nginx 吗?
  • error_log 里有什么内容吗?
  • nginx 真的在本地主机上监听吗?在 ip4 和 ip6 上?(netstat -plnt
  • 尝试使用 wget 并显示 ( wget -SO- http://localhost/nginx_status) 也许会出现一些内容
  • nginx 真的在读取这个配置文件吗?(还有其他地方吗?故意打错字,看看会不会出错)
  • 是否有多个 nginx?(这里有点紧张,但奇怪的事情已经发生了)。也许重启不会终止旧进程?
  • 删除 server_name 指令并尝试不使用

相关内容