CentOS 7 httpd /server-status 限制

CentOS 7 httpd /server-status 限制

我已经拥有 VPS(使用 CentOS 7 作为我的操作系统),现在我正在配置穆宁(监控软件)。我在使用 Apache 监控时遇到了一点小问题。

现在我已经在我的httpd配置文件一切正常:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost
</Location>

终端管理员:

munin-node-configure --suggest | grep apache
apache_accesses            | yes  | yes                                    
apache_processes           | yes  | yes                                    
apache_volume              | yes  | yes 

但此设置/server-status可通过服务器中的所有域使用:

example.com/server-status
example.net/server-status
192.0.2.1/example-status

我想要实现这样的目标:

example.com/server-status  ---> ERROR 404
example.net/server-status ---> ERROR 404
192.0.2.1/example-status     ---> OK

因此,当我将 cfg 从 httpd.conf 移到我的vhost 默认文件,现在看起来是:

<VirtualHost _default_:80>
    DocumentRoot /var/www/server
    ErrorLog /var/log/www/server_error.log
    CustomLog /var/log/www/server_requests.log combined
</VirtualHost>

更新后:

<VirtualHost _default_:80>
    DocumentRoot /var/www/server
    ErrorLog /var/log/www/server_error.log
    CustomLog /var/log/www/server_requests.log combined

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost
</Location>
</VirtualHost>

然后 Munin 停止监控 apache 服务并说:

apache_accesses            | yes  | no [apache server-status not found. check if mod_status is enabled]
apache_processes           | yes  | no [apache server-status not found. check if mod_status is enabled]
apache_volume              | yes  | no [apache server-status not found. check if mod_status is enabled]

PS:服务器没有主机名(我的意思是域名),我现在使用服务器 IP 作为其主机名。

您能帮助我实现所需的设置吗?

答案1

我认为您可以创建一个具有所需 ServerName 的虚拟主机。基于命名的虚拟主机设置中的 ServerName 会映射到您的浏览器/HTTP 客户端放入Host标头字段的任何内容。

因此这应该可行:

<VirtualHost *:80>
    ServerName 192.168.1.2
    DocumentRoot /var/www/server
    ErrorLog /var/log/www/server_error.log
    CustomLog /var/log/www/server_requests.log combined

    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from localhost
    </Location>
</VirtualHost>

Apache 文档(https://httpd.apache.org/docs/current/mod/core.html#servername) 指定可以使用 IP 作为 ServerName,并解释 ServerName 的工作原理如下:

如果您使用基于名称的虚拟主机,则部分内的 ServerName 指定哪个主机名必须出现在请求的 Host: 标头中以匹配此虚拟主机。

相关内容