试图从远程计算机获取nginx状态

时间:2012-03-25 06:57:32

标签: nginx

我正在尝试从远程计算机获取nginx的统计信息。我在nginx配置中添加了远程机器的ip地址,但是当我在远程机器上运行curl时,我被禁止了。如何重新开始?我重新加载了配置。

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


curl http://mysite/nginx_status
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.0.13</center>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

您确定远程计算机确实具有您在配置中写入的IP吗?它是什么IP地址?你可以在NAT或sthg ......后面......

同时检查Nginx的错误日志,你应该在那里找到一些有用的信息......(我希望我能正确记得它是在那里写的。无论如何,为什么访问注销?至少对于调试你可以使用它。 ..)

答案 1 :(得分:0)

亚马逊在内部解决了IP的不同问题。您应该使用内部IP而不是public-ipv4地址。

登录您的服务器并运行:

ec2metadata --local-ipv4

ubuntu@ip-10-244-231-180:~$ ec2metadata --local-ipv4
10.244.231.180

假设您的实例位于同一区域内,则应使用此IP地址。

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

您也可以使用

allow 10.0.0.0/8;(虽然未经测试)

答案 2 :(得分:0)

我也面临同样的问题,我无法在远程机器上获得nginx服务器状态。

相反,我在网络浏览器中收到403禁止错误。

我在“nginx.conf”文件中进行了一些修改,该文件位于此路径“/ usr / local / nginx_fstack / conf”中。所以事情对我很有用。

以前nginx.conf文件就像这样

http {
    ...
    server {
        ...
        location / {
            root   html;
            index  index.html index.htm;
        }

        location /nginx_status {
            stub_status on;

            access_log off;
            allow xx.xx.xx.xx/24;
            deny all;
        }
        ...
    }
}

我这样编辑了

http {
    ...
    server {
        location /nginx_status {
            stub_status on;

            access_log off;
            allow xx.xx.xx.xx/24;
            deny all;
        }
        ...
    }
}

稍后从浏览器“xx.xx.xx.xx / nginx_status”获得如下所示的正确状态:

Active connections: 54 
server accepts handled requests
12594 12594 12543 
Reading: 0 Writing: 1 Waiting: 53

对我来说效果很好: - )