我已经拥有 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: 标头中以匹配此虚拟主机。